@angular/core 9.0.0-rc.6 → 9.0.0

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 (234) hide show
  1. package/bundles/core-testing.umd.js +18 -16
  2. package/bundles/core-testing.umd.js.map +1 -1
  3. package/bundles/core-testing.umd.min.js +7 -7
  4. package/bundles/core-testing.umd.min.js.map +1 -1
  5. package/bundles/core.umd.js +4018 -4002
  6. package/bundles/core.umd.js.map +1 -1
  7. package/bundles/core.umd.min.js +172 -187
  8. package/bundles/core.umd.min.js.map +1 -1
  9. package/core.d.ts +725 -735
  10. package/core.metadata.json +1 -1
  11. package/esm2015/core.externs.js +5 -5
  12. package/esm2015/core.js +17 -15
  13. package/esm2015/index.js +2 -2
  14. package/esm2015/public_api.js +2 -2
  15. package/esm2015/src/application_init.js +10 -2
  16. package/esm2015/src/application_module.js +6 -3
  17. package/esm2015/src/application_ref.js +7 -7
  18. package/esm2015/src/core.js +4 -4
  19. package/esm2015/src/core_private_export.js +7 -7
  20. package/esm2015/src/core_render3_private_export.js +2 -2
  21. package/esm2015/src/debug/debug_node.js +71 -69
  22. package/esm2015/src/di/injectable.js +1 -13
  23. package/esm2015/src/di/injector.js +12 -10
  24. package/esm2015/src/di/interface/defs.js +28 -4
  25. package/esm2015/src/di/interface/provider.js +1 -1
  26. package/esm2015/src/di/jit/injectable.js +14 -2
  27. package/esm2015/src/di/jit/util.js +7 -5
  28. package/esm2015/src/di/r3_injector.js +5 -5
  29. package/esm2015/src/i18n/locale_data_api.js +22 -6
  30. package/esm2015/src/i18n/locale_en.js +16 -5
  31. package/esm2015/src/i18n/localization.js +7 -1
  32. package/esm2015/src/i18n/tokens.js +41 -1
  33. package/esm2015/src/interface/type.js +1 -1
  34. package/esm2015/src/metadata/ng_module.js +1 -1
  35. package/esm2015/src/render/api.js +4 -1
  36. package/esm2015/src/render3/assert.js +9 -1
  37. package/esm2015/src/render3/bindings.js +20 -7
  38. package/esm2015/src/render3/component.js +54 -25
  39. package/esm2015/src/render3/component_ref.js +17 -18
  40. package/esm2015/src/render3/definition.js +3 -1
  41. package/esm2015/src/render3/di.js +3 -4
  42. package/esm2015/src/render3/di_setup.js +5 -7
  43. package/esm2015/src/render3/errors.js +99 -19
  44. package/esm2015/src/render3/features/inherit_definition_feature.js +89 -52
  45. package/esm2015/src/render3/features/ng_onchanges_feature.js +2 -2
  46. package/esm2015/src/render3/global_utils_api.js +3 -3
  47. package/esm2015/src/render3/i18n.js +60 -56
  48. package/esm2015/src/render3/index.js +2 -2
  49. package/esm2015/src/render3/instructions/advance.js +10 -11
  50. package/esm2015/src/render3/instructions/all.js +4 -5
  51. package/esm2015/src/render3/instructions/attribute.js +12 -5
  52. package/esm2015/src/render3/instructions/attribute_interpolation.js +66 -14
  53. package/esm2015/src/render3/instructions/change_detection.js +8 -23
  54. package/esm2015/src/render3/instructions/class_map_interpolation.js +13 -12
  55. package/esm2015/src/render3/instructions/container.js +15 -12
  56. package/esm2015/src/render3/instructions/element.js +50 -133
  57. package/esm2015/src/render3/instructions/element_container.js +8 -10
  58. package/esm2015/src/render3/instructions/embedded_view.js +7 -7
  59. package/esm2015/src/render3/instructions/host_property.js +10 -7
  60. package/esm2015/src/render3/instructions/listener.js +18 -16
  61. package/esm2015/src/render3/instructions/lview_debug.js +160 -23
  62. package/esm2015/src/render3/instructions/projection.js +7 -5
  63. package/esm2015/src/render3/instructions/property.js +27 -6
  64. package/esm2015/src/render3/instructions/property_interpolation.js +42 -23
  65. package/esm2015/src/render3/instructions/shared.js +285 -245
  66. package/esm2015/src/render3/instructions/storage.js +6 -8
  67. package/esm2015/src/render3/instructions/style_prop_interpolation.js +12 -12
  68. package/esm2015/src/render3/instructions/styling.js +732 -470
  69. package/esm2015/src/render3/instructions/text.js +5 -5
  70. package/esm2015/src/render3/interfaces/definition.js +41 -1
  71. package/esm2015/src/render3/interfaces/node.js +160 -115
  72. package/esm2015/src/render3/interfaces/styling.js +183 -375
  73. package/esm2015/src/render3/interfaces/view.js +10 -2
  74. package/esm2015/src/render3/jit/directive.js +10 -16
  75. package/esm2015/src/render3/jit/environment.js +1 -3
  76. package/esm2015/src/render3/node_manipulation.js +177 -57
  77. package/esm2015/src/render3/node_selector_matcher.js +128 -24
  78. package/esm2015/src/render3/node_util.js +12 -7
  79. package/esm2015/src/render3/pipe.js +10 -14
  80. package/esm2015/src/render3/pure_function.js +107 -42
  81. package/esm2015/src/render3/query.js +32 -26
  82. package/esm2015/src/render3/state.js +54 -183
  83. package/esm2015/src/render3/styling/class_differ.js +47 -0
  84. package/esm2015/src/render3/styling/static_styling.js +54 -0
  85. package/esm2015/src/render3/styling/style_binding_list.js +437 -0
  86. package/esm2015/src/render3/styling/styling_parser.js +336 -0
  87. package/esm2015/src/render3/tokens.js +2 -2
  88. package/esm2015/src/render3/util/attrs_utils.js +125 -2
  89. package/esm2015/src/render3/util/change_detection_utils.js +33 -0
  90. package/esm2015/src/render3/util/discovery_utils.js +146 -119
  91. package/esm2015/src/render3/util/global_utils.js +5 -5
  92. package/esm2015/src/render3/util/view_utils.js +6 -6
  93. package/esm2015/src/render3/view_engine_compatibility.js +16 -17
  94. package/esm2015/src/render3/view_ref.js +16 -13
  95. package/esm2015/src/sanitization/bypass.js +1 -1
  96. package/esm2015/src/sanitization/inert_body.js +22 -18
  97. package/esm2015/src/sanitization/sanitization.js +20 -5
  98. package/esm2015/src/util/array_utils.js +240 -1
  99. package/esm2015/src/util/assert.js +37 -21
  100. package/esm2015/src/util/char_code.js +8 -0
  101. package/esm2015/src/util/iterable.js +4 -1
  102. package/esm2015/src/util/ng_dev_mode.js +1 -12
  103. package/esm2015/src/util/stringify.js +14 -1
  104. package/esm2015/src/version.js +1 -1
  105. package/esm2015/src/view/services.js +1 -1
  106. package/esm2015/testing/src/r3_test_bed.js +5 -1
  107. package/esm2015/testing/src/r3_test_bed_compiler.js +5 -13
  108. package/esm2015/testing/src/styling.js +103 -0
  109. package/esm5/core.js +17 -15
  110. package/esm5/src/application_init.js +10 -2
  111. package/esm5/src/application_module.js +6 -3
  112. package/esm5/src/application_ref.js +6 -6
  113. package/esm5/src/core.js +2 -2
  114. package/esm5/src/core_private_export.js +7 -7
  115. package/esm5/src/core_render3_private_export.js +2 -2
  116. package/esm5/src/debug/debug_node.js +47 -41
  117. package/esm5/src/di/injectable.js +1 -1
  118. package/esm5/src/di/injector.js +12 -12
  119. package/esm5/src/di/interface/defs.js +28 -4
  120. package/esm5/src/di/interface/provider.js +1 -1
  121. package/esm5/src/di/jit/injectable.js +11 -2
  122. package/esm5/src/di/jit/util.js +6 -5
  123. package/esm5/src/di/r3_injector.js +4 -4
  124. package/esm5/src/i18n/locale_data_api.js +20 -6
  125. package/esm5/src/i18n/locale_en.js +16 -5
  126. package/esm5/src/i18n/localization.js +6 -1
  127. package/esm5/src/i18n/tokens.js +40 -1
  128. package/esm5/src/interface/type.js +1 -1
  129. package/esm5/src/metadata/ng_module.js +1 -1
  130. package/esm5/src/render/api.js +4 -1
  131. package/esm5/src/render3/assert.js +4 -1
  132. package/esm5/src/render3/bindings.js +22 -4
  133. package/esm5/src/render3/component.js +47 -22
  134. package/esm5/src/render3/component_ref.js +15 -17
  135. package/esm5/src/render3/definition.js +3 -1
  136. package/esm5/src/render3/di.js +3 -4
  137. package/esm5/src/render3/di_setup.js +4 -5
  138. package/esm5/src/render3/errors.js +69 -12
  139. package/esm5/src/render3/features/inherit_definition_feature.js +74 -42
  140. package/esm5/src/render3/features/ng_onchanges_feature.js +1 -1
  141. package/esm5/src/render3/global_utils_api.js +3 -3
  142. package/esm5/src/render3/i18n.js +51 -51
  143. package/esm5/src/render3/index.js +2 -2
  144. package/esm5/src/render3/instructions/advance.js +9 -11
  145. package/esm5/src/render3/instructions/all.js +1 -2
  146. package/esm5/src/render3/instructions/attribute.js +9 -5
  147. package/esm5/src/render3/instructions/attribute_interpolation.js +49 -13
  148. package/esm5/src/render3/instructions/change_detection.js +8 -21
  149. package/esm5/src/render3/instructions/class_map_interpolation.js +13 -12
  150. package/esm5/src/render3/instructions/container.js +13 -12
  151. package/esm5/src/render3/instructions/element.js +46 -114
  152. package/esm5/src/render3/instructions/element_container.js +8 -9
  153. package/esm5/src/render3/instructions/embedded_view.js +7 -7
  154. package/esm5/src/render3/instructions/host_property.js +8 -7
  155. package/esm5/src/render3/instructions/listener.js +13 -13
  156. package/esm5/src/render3/instructions/lview_debug.js +56 -15
  157. package/esm5/src/render3/instructions/projection.js +6 -5
  158. package/esm5/src/render3/instructions/property.js +17 -6
  159. package/esm5/src/render3/instructions/property_interpolation.js +32 -24
  160. package/esm5/src/render3/instructions/shared.js +264 -211
  161. package/esm5/src/render3/instructions/storage.js +4 -6
  162. package/esm5/src/render3/instructions/style_prop_interpolation.js +12 -12
  163. package/esm5/src/render3/instructions/styling.js +685 -363
  164. package/esm5/src/render3/instructions/text.js +5 -5
  165. package/esm5/src/render3/interfaces/definition.js +1 -1
  166. package/esm5/src/render3/interfaces/node.js +49 -1
  167. package/esm5/src/render3/interfaces/styling.js +57 -1
  168. package/esm5/src/render3/interfaces/view.js +1 -1
  169. package/esm5/src/render3/jit/directive.js +8 -10
  170. package/esm5/src/render3/jit/environment.js +1 -3
  171. package/esm5/src/render3/node_manipulation.js +167 -54
  172. package/esm5/src/render3/node_selector_matcher.js +113 -20
  173. package/esm5/src/render3/node_util.js +12 -7
  174. package/esm5/src/render3/pipe.js +10 -14
  175. package/esm5/src/render3/pure_function.js +103 -33
  176. package/esm5/src/render3/query.js +25 -24
  177. package/esm5/src/render3/state.js +34 -131
  178. package/esm5/src/render3/styling/class_differ.js +39 -0
  179. package/esm5/src/render3/styling/static_styling.js +42 -0
  180. package/esm5/src/render3/styling/style_binding_list.js +411 -0
  181. package/esm5/src/render3/styling/styling_parser.js +265 -0
  182. package/esm5/src/render3/tokens.js +2 -2
  183. package/esm5/src/render3/util/attrs_utils.js +117 -2
  184. package/esm5/src/render3/util/change_detection_utils.js +23 -0
  185. package/esm5/src/render3/util/discovery_utils.js +115 -99
  186. package/esm5/src/render3/util/global_utils.js +5 -5
  187. package/esm5/src/render3/util/view_utils.js +5 -5
  188. package/esm5/src/render3/view_engine_compatibility.js +37 -39
  189. package/esm5/src/render3/view_ref.js +14 -13
  190. package/esm5/src/sanitization/bypass.js +1 -1
  191. package/esm5/src/sanitization/inert_body.js +20 -13
  192. package/esm5/src/sanitization/sanitization.js +16 -5
  193. package/esm5/src/util/array_utils.js +240 -1
  194. package/esm5/src/util/assert.js +37 -21
  195. package/esm5/src/util/char_code.js +8 -0
  196. package/esm5/src/util/iterable.js +4 -1
  197. package/esm5/src/util/ng_dev_mode.js +1 -12
  198. package/esm5/src/util/stringify.js +14 -1
  199. package/esm5/src/version.js +1 -1
  200. package/esm5/src/view/services.js +1 -1
  201. package/esm5/testing/src/r3_test_bed.js +9 -1
  202. package/esm5/testing/src/r3_test_bed_compiler.js +9 -15
  203. package/esm5/testing/src/styling.js +82 -0
  204. package/fesm2015/core.js +5352 -6012
  205. package/fesm2015/core.js.map +1 -1
  206. package/fesm2015/testing.js +10 -14
  207. package/fesm2015/testing.js.map +1 -1
  208. package/fesm5/core.js +3987 -3980
  209. package/fesm5/core.js.map +1 -1
  210. package/fesm5/testing.js +18 -16
  211. package/fesm5/testing.js.map +1 -1
  212. package/package.json +1 -1
  213. package/schematics/migrations/missing-injectable/transform.js +2 -3
  214. package/schematics/migrations/module-with-providers/transform.js +3 -2
  215. package/schematics/migrations/undecorated-classes-with-di/index.js +2 -2
  216. package/schematics/utils/typescript/compiler_host.js +2 -2
  217. package/src/r3_symbols.d.ts +46 -23
  218. package/testing/testing.d.ts +3 -5
  219. package/testing/testing.metadata.json +1 -1
  220. package/testing.d.ts +2 -2
  221. package/esm2015/global.js +0 -7
  222. package/esm2015/src/render3/instructions/alloc_host_vars.js +0 -80
  223. package/esm2015/src/render3/styling/bindings.js +0 -1248
  224. package/esm2015/src/render3/styling/map_based_bindings.js +0 -384
  225. package/esm2015/src/render3/styling/state.js +0 -135
  226. package/esm2015/src/render3/styling/styling_debug.js +0 -712
  227. package/esm2015/src/render3/util/styling_utils.js +0 -625
  228. package/esm5/global.js +0 -9
  229. package/esm5/src/render3/instructions/alloc_host_vars.js +0 -62
  230. package/esm5/src/render3/styling/bindings.js +0 -949
  231. package/esm5/src/render3/styling/map_based_bindings.js +0 -310
  232. package/esm5/src/render3/styling/state.js +0 -56
  233. package/esm5/src/render3/styling/styling_debug.js +0 -352
  234. package/esm5/src/render3/util/styling_utils.js +0 -378
package/core.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
- * @license Angular v9.0.0-rc.6
3
- * (c) 2010-2019 Google LLC. https://angular.io/
2
+ * @license Angular v9.0.0
3
+ * (c) 2010-2020 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
6
6
 
@@ -225,7 +225,15 @@ export declare const APP_BOOTSTRAP_LISTENER: InjectionToken<((compRef: Component
225
225
  export declare const APP_ID: InjectionToken<string>;
226
226
 
227
227
  /**
228
- * A function that will be executed when an application is initialized.
228
+ * An injection token that allows you to provide one or more initialization functions.
229
+ * These function are injected at application startup and executed during
230
+ * app initialization. If any of these functions returns a Promise, initialization
231
+ * does not complete until the Promise is resolved.
232
+ *
233
+ * You can, for example, create a factory function that loads language data
234
+ * or an external configuration, and provide that function to the `APP_INITIALIZER` token.
235
+ * That way, the function is executed during the application bootstrap process,
236
+ * and the needed data is available on startup.
229
237
  *
230
238
  * @publicApi
231
239
  */
@@ -422,7 +430,7 @@ export declare class ApplicationRef {
422
430
  /**
423
431
  * Returns the number of attached views.
424
432
  */
425
- readonly viewCount: number;
433
+ get viewCount(): number;
426
434
  }
427
435
 
428
436
  /**
@@ -1077,26 +1085,26 @@ declare abstract class ComponentFactory<C> {
1077
1085
  /**
1078
1086
  * The component's HTML selector.
1079
1087
  */
1080
- abstract readonly selector: string;
1088
+ abstract get selector(): string;
1081
1089
  /**
1082
1090
  * The type of component the factory will create.
1083
1091
  */
1084
- abstract readonly componentType: Type<any>;
1092
+ abstract get componentType(): Type<any>;
1085
1093
  /**
1086
1094
  * Selector for all <ng-content> elements in the component.
1087
1095
  */
1088
- abstract readonly ngContentSelectors: string[];
1096
+ abstract get ngContentSelectors(): string[];
1089
1097
  /**
1090
1098
  * The inputs of the component.
1091
1099
  */
1092
- abstract readonly inputs: {
1100
+ abstract get inputs(): {
1093
1101
  propName: string;
1094
1102
  templateName: string;
1095
1103
  }[];
1096
1104
  /**
1097
1105
  * The outputs of the component.
1098
1106
  */
1099
- abstract readonly outputs: {
1107
+ abstract get outputs(): {
1100
1108
  propName: string;
1101
1109
  templateName: string;
1102
1110
  }[];
@@ -1139,28 +1147,28 @@ export declare abstract class ComponentRef<C> {
1139
1147
  /**
1140
1148
  * The host or anchor [element](guide/glossary#element) for this component instance.
1141
1149
  */
1142
- abstract readonly location: ElementRef;
1150
+ abstract get location(): ElementRef;
1143
1151
  /**
1144
1152
  * The [dependency injector](guide/glossary#injector) for this component instance.
1145
1153
  */
1146
- abstract readonly injector: Injector;
1154
+ abstract get injector(): Injector;
1147
1155
  /**
1148
1156
  * This component instance.
1149
1157
  */
1150
- abstract readonly instance: C;
1158
+ abstract get instance(): C;
1151
1159
  /**
1152
1160
  * The [host view](guide/glossary#view-tree) defined by the template
1153
1161
  * for this component instance.
1154
1162
  */
1155
- abstract readonly hostView: ViewRef;
1163
+ abstract get hostView(): ViewRef;
1156
1164
  /**
1157
1165
  * The change detector for this component instance.
1158
1166
  */
1159
- abstract readonly changeDetectorRef: ChangeDetectorRef;
1167
+ abstract get changeDetectorRef(): ChangeDetectorRef;
1160
1168
  /**
1161
1169
  * The type of this component (as created by a `ComponentFactory` class).
1162
1170
  */
1163
- abstract readonly componentType: Type<any>;
1171
+ abstract get componentType(): Type<any>;
1164
1172
  /**
1165
1173
  * Destroys the component instance and all of the data structures associated with it.
1166
1174
  */
@@ -1501,8 +1509,8 @@ export declare const DebugElement: {
1501
1509
 
1502
1510
  declare class DebugElement__POST_R3__ extends DebugNode__POST_R3__ implements DebugElement {
1503
1511
  constructor(nativeNode: Element);
1504
- readonly nativeElement: Element | null;
1505
- readonly name: string;
1512
+ get nativeElement(): Element | null;
1513
+ get name(): string;
1506
1514
  /**
1507
1515
  * Gets a map of property names to property values for an element.
1508
1516
  *
@@ -1515,21 +1523,20 @@ declare class DebugElement__POST_R3__ extends DebugNode__POST_R3__ implements De
1515
1523
  * - input property bindings (e.g. `[myCustomInput]="value"`)
1516
1524
  * - attribute bindings (e.g. `[attr.role]="menu"`)
1517
1525
  */
1518
- readonly properties: {
1526
+ get properties(): {
1519
1527
  [key: string]: any;
1520
1528
  };
1521
- readonly attributes: {
1529
+ get attributes(): {
1522
1530
  [key: string]: string | null;
1523
1531
  };
1524
- readonly styles: {
1532
+ get styles(): {
1525
1533
  [key: string]: string | null;
1526
1534
  };
1527
- private _classesProxy;
1528
- readonly classes: {
1535
+ get classes(): {
1529
1536
  [key: string]: boolean;
1530
1537
  };
1531
- readonly childNodes: DebugNode[];
1532
- readonly children: DebugElement[];
1538
+ get childNodes(): DebugNode[];
1539
+ get children(): DebugElement[];
1533
1540
  query(predicate: Predicate<DebugElement>): DebugElement;
1534
1541
  queryAll(predicate: Predicate<DebugElement>): DebugElement[];
1535
1542
  queryAllNodes(predicate: Predicate<DebugNode>): DebugNode[];
@@ -1571,15 +1578,15 @@ export declare const DebugNode: {
1571
1578
  declare class DebugNode__POST_R3__ implements DebugNode {
1572
1579
  readonly nativeNode: Node;
1573
1580
  constructor(nativeNode: Node);
1574
- readonly parent: DebugElement | null;
1575
- readonly injector: Injector;
1576
- readonly componentInstance: any;
1577
- readonly context: any;
1578
- readonly listeners: DebugEventListener[];
1579
- readonly references: {
1581
+ get parent(): DebugElement | null;
1582
+ get injector(): Injector;
1583
+ get componentInstance(): any;
1584
+ get context(): any;
1585
+ get listeners(): DebugEventListener[];
1586
+ get references(): {
1580
1587
  [key: string]: any;
1581
1588
  };
1582
- readonly providerTokens: any[];
1589
+ get providerTokens(): any[];
1583
1590
  }
1584
1591
 
1585
1592
  declare const DECLARATION_COMPONENT_VIEW = 16;
@@ -1588,6 +1595,46 @@ declare const DECLARATION_LCONTAINER = 17;
1588
1595
 
1589
1596
  declare const DECLARATION_VIEW = 15;
1590
1597
 
1598
+ /**
1599
+ * Provide this token to set the default currency code your application uses for
1600
+ * CurrencyPipe when there is no currency code passed into it. This is only used by
1601
+ * CurrencyPipe and has no relation to locale currency. Defaults to USD if not configured.
1602
+ *
1603
+ * See the [i18n guide](guide/i18n#setting-up-locale) for more information.
1604
+ *
1605
+ * <div class="alert is-helpful">
1606
+ *
1607
+ * **Deprecation notice:**
1608
+ *
1609
+ * The default currency code is currently always `USD` but this is deprecated from v9.
1610
+ *
1611
+ * **In v10 the default currency code will be taken from the current locale.**
1612
+ *
1613
+ * If you need the previous behavior then set it by creating a `DEFAULT_CURRENCY_CODE` provider in
1614
+ * your application `NgModule`:
1615
+ *
1616
+ * ```ts
1617
+ * {provide: DEFAULT_CURRENCY_CODE, useValue: 'USD'}
1618
+ * ```
1619
+ *
1620
+ * </div>
1621
+ *
1622
+ * @usageNotes
1623
+ * ### Example
1624
+ *
1625
+ * ```typescript
1626
+ * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
1627
+ * import { AppModule } from './app/app.module';
1628
+ *
1629
+ * platformBrowserDynamic().bootstrapModule(AppModule, {
1630
+ * providers: [{provide: DEFAULT_CURRENCY_CODE, useValue: 'EUR' }]
1631
+ * });
1632
+ * ```
1633
+ *
1634
+ * @publicApi
1635
+ */
1636
+ export declare const DEFAULT_CURRENCY_CODE: InjectionToken<string>;
1637
+
1591
1638
  /**
1592
1639
  * @deprecated v4.0.0 - Should not be part of public API.
1593
1640
  * @publicApi
@@ -1620,7 +1667,7 @@ export declare class DefaultIterableDiffer<V> implements IterableDiffer<V>, Iter
1620
1667
  diff(collection: NgIterable<V> | null | undefined): DefaultIterableDiffer<V> | null;
1621
1668
  onDestroy(): void;
1622
1669
  check(collection: NgIterable<V>): boolean;
1623
- readonly isDirty: boolean;
1670
+ get isDirty(): boolean;
1624
1671
  private _addToRemovals;
1625
1672
  }
1626
1673
 
@@ -2160,11 +2207,11 @@ export declare abstract class EmbeddedViewRef<C> extends ViewRef {
2160
2207
  /**
2161
2208
  * The context for this view, inherited from the anchor element.
2162
2209
  */
2163
- abstract readonly context: C;
2210
+ abstract get context(): C;
2164
2211
  /**
2165
2212
  * The root nodes for this embedded view.
2166
2213
  */
2167
- abstract readonly rootNodes: any[];
2214
+ abstract get rootNodes(): any[];
2168
2215
  }
2169
2216
 
2170
2217
  /**
@@ -2557,7 +2604,7 @@ export declare interface HostBindingDecorator {
2557
2604
  new (hostPropertyName?: string): any;
2558
2605
  }
2559
2606
 
2560
- declare type HostBindingsFunction<T> = <U extends T>(rf: ɵRenderFlags, ctx: U, elementIndex: number) => void;
2607
+ declare type HostBindingsFunction<T> = <U extends T>(rf: ɵRenderFlags, ctx: U) => void;
2561
2608
 
2562
2609
  /**
2563
2610
  * Type of the Host decorator / constructor function.
@@ -2917,13 +2964,13 @@ export declare const inject: typeof ɵɵinject;
2917
2964
  export declare interface Injectable {
2918
2965
  /**
2919
2966
  * Determines which injectors will provide the injectable,
2920
- * by either associating it with an @NgModule or other `InjectorType`,
2921
- * or by specifying that this injectable should be provided in the:
2922
- * - 'root' injector, which will be the application-level injector in most apps.
2923
- * - 'platform' injector, which would be the special singleton platform injector shared by all
2967
+ * by either associating it with an `@NgModule` or other `InjectorType`,
2968
+ * or by specifying that this injectable should be provided in one of the following injectors:
2969
+ * - 'root' : The application-level injector in most apps.
2970
+ * - 'platform' : A special singleton platform injector shared by all
2924
2971
  * applications on the page.
2925
- * - 'any' injector, which would be the injector which receives the resolution. (Note this only
2926
- * works on NgModule Injectors and not on Element Injector)
2972
+ * - 'any' : The NgModule injector that receives the resolution.
2973
+ *
2927
2974
  */
2928
2975
  providedIn?: Type<any> | 'root' | 'platform' | 'any' | null;
2929
2976
  }
@@ -3113,12 +3160,20 @@ export declare class InjectionToken<T> {
3113
3160
  export declare const INJECTOR: InjectionToken<Injector>;
3114
3161
 
3115
3162
  /**
3116
- * Concrete injectors implement this interface.
3163
+ * Concrete injectors implement this interface. Injectors are configured
3164
+ * with [providers](guide/glossary#provider) that associate
3165
+ * dependencies of various types with [injection tokens](guide/glossary#di-token).
3117
3166
  *
3118
- * For more details, see the ["Dependency Injection Guide"](guide/dependency-injection).
3167
+ * @see ["DI Providers"](guide/dependency-injection-providers).
3168
+ * @see `StaticProvider`
3119
3169
  *
3120
3170
  * @usageNotes
3121
- * ### Example
3171
+ *
3172
+ * The following example creates a service injector instance.
3173
+ *
3174
+ * {@example core/di/ts/provider_spec.ts region='ConstructorProvider'}
3175
+ *
3176
+ * ### Usage example
3122
3177
  *
3123
3178
  * {@example core/di/ts/injector_spec.ts region='Injector'}
3124
3179
  *
@@ -3146,6 +3201,18 @@ export declare abstract class Injector {
3146
3201
  * @deprecated from v5 use the new signature Injector.create(options)
3147
3202
  */
3148
3203
  static create(providers: StaticProvider[], parent?: Injector): Injector;
3204
+ /**
3205
+ * Creates a new injector instance that provides one or more dependencies,
3206
+ * according to a given type or types of `StaticProvider`.
3207
+ *
3208
+ * @param options An object with the following properties:
3209
+ * * `providers`: An array of providers of the [StaticProvider type](api/core/StaticProvider).
3210
+ * * `parent`: (optional) A parent injector.
3211
+ * * `name`: (optional) A developer-defined identifying name for the new injector.
3212
+ *
3213
+ * @returns The new injector instance.
3214
+ *
3215
+ */
3149
3216
  static create(options: {
3150
3217
  providers: StaticProvider[];
3151
3218
  parent?: Injector;
@@ -3314,12 +3381,6 @@ declare interface InstructionState {
3314
3381
  * Necessary to support ChangeDetectorRef.checkNoChanges().
3315
3382
  */
3316
3383
  checkNoChangesMode: boolean;
3317
- /**
3318
- * Function to be called when the element is exited.
3319
- *
3320
- * NOTE: The function is here for tree shakable purposes since it is only needed by styling.
3321
- */
3322
- elementExitFn: (() => void) | null;
3323
3384
  }
3324
3385
 
3325
3386
  declare interface InternalNgModuleRef<T> extends NgModuleRef<T> {
@@ -3476,6 +3537,22 @@ export declare class IterableDiffers {
3476
3537
  find(iterable: any): IterableDifferFactory;
3477
3538
  }
3478
3539
 
3540
+ /**
3541
+ * `KeyValueArray` is an array where even positions contain keys and odd positions contain values.
3542
+ *
3543
+ * `KeyValueArray` provides a very efficient way of iterating over its contents. For small
3544
+ * sets (~10) the cost of binary searching an `KeyValueArray` has about the same performance
3545
+ * characteristics that of a `Map` with significantly better memory footprint.
3546
+ *
3547
+ * If used as a `Map` the keys are stored in alphabetical order so that they can be binary searched
3548
+ * for retrieval.
3549
+ *
3550
+ * See: `keyValueArraySet`, `keyValueArrayGet`, `keyValueArrayIndexOf`, `keyValueArrayDelete`.
3551
+ */
3552
+ declare interface KeyValueArray<VALUE> extends Array<VALUE | string> {
3553
+ __brand__: 'array-map';
3554
+ }
3555
+
3479
3556
  /**
3480
3557
  * Record representing the item change information.
3481
3558
  *
@@ -3622,7 +3699,7 @@ declare interface LContainer extends Array<any> {
3622
3699
  * The host could be an LView if this container is on a component node.
3623
3700
  * In that case, the component LView is its HOST.
3624
3701
  */
3625
- readonly [HOST]: RElement | RComment | ɵangular_packages_core_core_bg;
3702
+ readonly [HOST]: RElement | RComment | ɵangular_packages_core_core_bo;
3626
3703
  /**
3627
3704
  * This is a type field which allows us to differentiate `LContainer` from `StylingContext` in an
3628
3705
  * efficient way. The value is always set to `true`
@@ -3647,18 +3724,18 @@ declare interface LContainer extends Array<any> {
3647
3724
  * Access to the parent view is necessary so we can propagate back
3648
3725
  * up from inside a container to parent[NEXT].
3649
3726
  */
3650
- [PARENT]: ɵangular_packages_core_core_bg;
3727
+ [PARENT]: ɵangular_packages_core_core_bo;
3651
3728
  /**
3652
3729
  * This allows us to jump from a container to a sibling container or component
3653
3730
  * view with the same parent, so we can remove listeners efficiently.
3654
3731
  */
3655
- [NEXT]: ɵangular_packages_core_core_bg | LContainer | null;
3732
+ [NEXT]: ɵangular_packages_core_core_bo | LContainer | null;
3656
3733
  /**
3657
3734
  * A collection of views created based on the underlying `<ng-template>` element but inserted into
3658
3735
  * a different `LContainer`. We need to track views created from a given declaration point since
3659
3736
  * queries collect matches from the embedded view declaration point and _not_ the insertion point.
3660
3737
  */
3661
- [MOVED_VIEWS]: ɵangular_packages_core_core_bg[] | null;
3738
+ [MOVED_VIEWS]: ɵangular_packages_core_core_bo[] | null;
3662
3739
  /**
3663
3740
  * Pointer to the `TNode` which represents the host of the container.
3664
3741
  */
@@ -3695,11 +3772,18 @@ declare interface LFrame {
3695
3772
  * An array of nodes (text, element, container, etc), pipes, their bindings, and
3696
3773
  * any local variables that need to be stored between invocations.
3697
3774
  */
3698
- lView: ɵangular_packages_core_core_bg;
3775
+ lView: ɵangular_packages_core_core_bo;
3776
+ /**
3777
+ * Current `TView` associated with the `LFrame.lView`.
3778
+ *
3779
+ * One can get `TView` from `lFrame[TVIEW]` however because it is so common it makes sense to
3780
+ * store it in `LFrame` for perf reasons.
3781
+ */
3782
+ tView: TView;
3699
3783
  /**
3700
3784
  * Used to set the parent property when nodes are created and track query results.
3701
3785
  *
3702
- * This is used in conjection with `isParent`.
3786
+ * This is used in conjunction with `isParent`.
3703
3787
  */
3704
3788
  previousOrParentTNode: TNode;
3705
3789
  /**
@@ -3724,7 +3808,7 @@ declare interface LFrame {
3724
3808
  *
3725
3809
  * e.g. const inner = x().$implicit; const outer = x().$implicit;
3726
3810
  */
3727
- contextLView: ɵangular_packages_core_core_bg;
3811
+ contextLView: ɵangular_packages_core_core_bo;
3728
3812
  /**
3729
3813
  * Store the element depth count. This is used to identify the root elements of the template
3730
3814
  * so that we can then attach patch data `LView` to only those elements. We know that those
@@ -3740,18 +3824,6 @@ declare interface LFrame {
3740
3824
  * Current sanitizer
3741
3825
  */
3742
3826
  currentSanitizer: StyleSanitizeFn | null;
3743
- /**
3744
- * Used when processing host bindings.
3745
- */
3746
- currentDirectiveDef: ɵDirectiveDef<any> | ɵComponentDef<any> | null;
3747
- /**
3748
- * Used as the starting directive id value.
3749
- *
3750
- * All subsequent directives are incremented from this value onwards.
3751
- * The reason why this value is `1` instead of `0` is because the `0`
3752
- * value is reserved for the template.
3753
- */
3754
- activeDirectiveId: number;
3755
3827
  /**
3756
3828
  * The root index from which pure function instructions should calculate their binding
3757
3829
  * indices. In component views, this is TView.bindingStartIndex. In a host binding
@@ -3763,6 +3835,12 @@ declare interface LFrame {
3763
3835
  * We iterate over the list of Queries and increment current query index at every step.
3764
3836
  */
3765
3837
  currentQueryIndex: number;
3838
+ /**
3839
+ * When host binding is executing this points to the directive index.
3840
+ * `TView.data[currentDirectiveIndex]` is `DirectiveDef`
3841
+ * `LView[currentDirectiveIndex]` is directive instance.
3842
+ */
3843
+ currentDirectiveIndex: number;
3766
3844
  }
3767
3845
 
3768
3846
  /**
@@ -3795,7 +3873,7 @@ export declare const LOCALE_ID: InjectionToken<string>;
3795
3873
  * - `<div #nativeDivEl>` - `nativeDivEl` should point to the native `<div>` element;
3796
3874
  * - `<ng-template #tplRef>` - `tplRef` should point to the `TemplateRef` instance;
3797
3875
  */
3798
- declare type LocalRefExtractor = (tNode: TNodeWithLocalRefs, currentView: ɵangular_packages_core_core_bg) => any;
3876
+ declare type LocalRefExtractor = (tNode: TNodeWithLocalRefs, currentView: ɵangular_packages_core_core_bo) => any;
3799
3877
 
3800
3878
  /**
3801
3879
  * lQueries represent a collection of individual LQuery objects tracked in a given view.
@@ -4210,7 +4288,7 @@ declare interface NgModuleDefinitionFactory extends DefinitionFactory<NgModuleDe
4210
4288
  * @publicApi
4211
4289
  */
4212
4290
  export declare abstract class NgModuleFactory<T> {
4213
- abstract readonly moduleType: Type<T>;
4291
+ abstract get moduleType(): Type<T>;
4214
4292
  abstract create(parentInjector: Injector | null): NgModuleRef<T>;
4215
4293
  }
4216
4294
 
@@ -4245,16 +4323,16 @@ export declare abstract class NgModuleRef<T> {
4245
4323
  /**
4246
4324
  * The injector that contains all of the providers of the NgModule.
4247
4325
  */
4248
- abstract readonly injector: Injector;
4326
+ abstract get injector(): Injector;
4249
4327
  /**
4250
4328
  * The ComponentFactoryResolver to get hold of the ComponentFactories
4251
4329
  * declared in the `entryComponents` property of the module.
4252
4330
  */
4253
- abstract readonly componentFactoryResolver: ComponentFactoryResolver;
4331
+ abstract get componentFactoryResolver(): ComponentFactoryResolver;
4254
4332
  /**
4255
4333
  * The NgModule instance.
4256
4334
  */
4257
- abstract readonly instance: T;
4335
+ abstract get instance(): T;
4258
4336
  /**
4259
4337
  * Destroys the module instance and all of the data structures associated with it.
4260
4338
  */
@@ -4922,12 +5000,12 @@ export declare class PlatformRef {
4922
5000
  * Retrieve the platform {@link Injector}, which is the parent injector for
4923
5001
  * every Angular application on the page and provides singleton providers.
4924
5002
  */
4925
- readonly injector: Injector;
5003
+ get injector(): Injector;
4926
5004
  /**
4927
5005
  * Destroy the Angular platform and all Angular applications on the page.
4928
5006
  */
4929
5007
  destroy(): void;
4930
- readonly destroyed: boolean;
5008
+ get destroyed(): boolean;
4931
5009
  }
4932
5010
 
4933
5011
  declare interface PlatformReflectionCapabilities {
@@ -5249,7 +5327,7 @@ declare class R3Injector {
5249
5327
  /**
5250
5328
  * Flag indicating that this injector was previously destroyed.
5251
5329
  */
5252
- readonly destroyed: boolean;
5330
+ get destroyed(): boolean;
5253
5331
  private _destroyed;
5254
5332
  constructor(def: InjectorType<any>, additionalProviders: StaticProvider[] | null, parent: Injector, source?: string | null);
5255
5333
  /**
@@ -5420,7 +5498,7 @@ export declare abstract class ReflectiveInjector implements Injector {
5420
5498
  * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection.
5421
5499
  * -->
5422
5500
  */
5423
- abstract readonly parent: Injector | null;
5501
+ abstract get parent(): Injector | null;
5424
5502
  /**
5425
5503
  * Resolves an array of providers and creates a child injector from those providers.
5426
5504
  *
@@ -5562,7 +5640,7 @@ export declare class ReflectiveKey {
5562
5640
  /**
5563
5641
  * @returns the number of keys registered in the system.
5564
5642
  */
5565
- static readonly numberOfKeys: number;
5643
+ static get numberOfKeys(): number;
5566
5644
  }
5567
5645
 
5568
5646
  /**
@@ -5605,7 +5683,7 @@ export declare abstract class Renderer2 {
5605
5683
  * as an object containing key-value pairs.
5606
5684
  * This is useful for renderers that delegate to other renderers.
5607
5685
  */
5608
- abstract readonly data: {
5686
+ abstract get data(): {
5609
5687
  [key: string]: any;
5610
5688
  };
5611
5689
  /**
@@ -6254,8 +6332,11 @@ export declare interface StaticClassSansProvider {
6254
6332
  }
6255
6333
 
6256
6334
  /**
6257
- * Describes how the `Injector` should be configured as static (that is, without reflection).
6258
- * @see ["Dependency Injection Guide"](guide/dependency-injection).
6335
+ * Describes how an `Injector` should be configured as static (that is, without reflection).
6336
+ * A static provider provides tokens to an injector for various types of dependencies.
6337
+ *
6338
+ * @see [Injector.create()](/api/core/Injector#create).
6339
+ * @see ["Dependency Injection Guide"](guide/dependency-injection-providers).
6259
6340
  *
6260
6341
  * @publicApi
6261
6342
  */
@@ -6296,39 +6377,6 @@ declare const enum StyleSanitizeMode {
6296
6377
  ValidateAndSanitize = 3
6297
6378
  }
6298
6379
 
6299
- /**
6300
- * Array-based representation of a key/value array.
6301
- *
6302
- * The format of the array is "property", "value", "property2",
6303
- * "value2", etc...
6304
- *
6305
- * The first value in the array is reserved to store the instance
6306
- * of the key/value array that was used to populate the property/
6307
- * value entries that take place in the remainder of the array.
6308
- */
6309
- declare interface StylingMapArray extends Array<{} | string | number | null | undefined> {
6310
- /**
6311
- * The last raw value used to generate the entries in the map.
6312
- */
6313
- [StylingMapArrayIndex.RawValuePosition]: {} | string | number | null | undefined;
6314
- }
6315
-
6316
- /**
6317
- * An index of position and offset points for any data stored within a `StylingMapArray` instance.
6318
- */
6319
- declare const enum StylingMapArrayIndex {
6320
- /** Where the values start in the array */
6321
- ValuesStartPosition = 1,
6322
- /** The location of the raw key/value map instance used last to populate the array entries */
6323
- RawValuePosition = 0,
6324
- /** The size of each property/value entry */
6325
- TupleSize = 2,
6326
- /** The offset for the property entry in the tuple */
6327
- PropOffset = 0,
6328
- /** The offset for the value entry in the tuple */
6329
- ValueOffset = 1
6330
- }
6331
-
6332
6380
  /**
6333
6381
  * NgModuleFactoryLoader that uses SystemJS to load NgModuleFactory
6334
6382
  * @publicApi
@@ -6396,7 +6444,7 @@ declare interface TContainerNode extends TNode {
6396
6444
  * - They are the first node of a component or embedded view
6397
6445
  * - They are dynamically created
6398
6446
  */
6399
- parent: ɵangular_packages_core_core_bb | TElementContainerNode | null;
6447
+ parent: ɵangular_packages_core_core_be | TElementContainerNode | null;
6400
6448
  tViews: TView | TView[] | null;
6401
6449
  projection: null;
6402
6450
  }
@@ -6428,14 +6476,14 @@ declare interface TContainerNode extends TNode {
6428
6476
  *
6429
6477
  * Injector bloom filters are also stored here.
6430
6478
  */
6431
- declare type TData = (TNode | ɵPipeDef<any> | ɵDirectiveDef<any> | ɵComponentDef<any> | number | Type<any> | InjectionToken<any> | TI18n | I18nUpdateOpCodes | null | string)[];
6479
+ declare type TData = (TNode | ɵPipeDef<any> | ɵDirectiveDef<any> | ɵComponentDef<any> | number | TStylingRange | TStylingKey | Type<any> | InjectionToken<any> | TI18n | I18nUpdateOpCodes | null | string)[];
6432
6480
 
6433
6481
  /** Static data for an <ng-container> */
6434
6482
  declare interface TElementContainerNode extends TNode {
6435
6483
  /** Index in the LView[] array. */
6436
6484
  index: number;
6437
- child: ɵangular_packages_core_core_bb | TTextNode | TContainerNode | TElementContainerNode | TProjectionNode | null;
6438
- parent: ɵangular_packages_core_core_bb | TElementContainerNode | null;
6485
+ child: ɵangular_packages_core_core_be | TTextNode | TContainerNode | TElementContainerNode | TProjectionNode | null;
6486
+ parent: ɵangular_packages_core_core_be | TElementContainerNode | null;
6439
6487
  tViews: null;
6440
6488
  projection: null;
6441
6489
  }
@@ -6470,7 +6518,7 @@ export declare abstract class TemplateRef<C> {
6470
6518
  * data-binding and injection context from the original location.
6471
6519
  *
6472
6520
  */
6473
- abstract readonly elementRef: ElementRef;
6521
+ abstract get elementRef(): ElementRef;
6474
6522
  /**
6475
6523
  * Instantiates an embedded view based on this template,
6476
6524
  * and attaches it to the view container.
@@ -6729,6 +6777,23 @@ declare interface TNode {
6729
6777
  * Stores final exclusive index of the directives.
6730
6778
  */
6731
6779
  directiveEnd: number;
6780
+ /**
6781
+ * Stores the last directive which had a styling instruction.
6782
+ *
6783
+ * Initial value of this is `-1` which means that no `hostBindings` styling instruction has
6784
+ * executed. As `hostBindings` instructions execute they set the value to the index of the
6785
+ * `DirectiveDef` which contained the last `hostBindings` styling instruction.
6786
+ *
6787
+ * Valid values are:
6788
+ * - `-1` No `hostBindings` instruction has executed.
6789
+ * - `directiveStart <= directiveStylingLast < directiveEnd`: Points to the `DirectiveDef` of the
6790
+ * last styling instruction which executed in the `hostBindings`.
6791
+ *
6792
+ * This data is needed so that styling instructions know which static styling data needs to be
6793
+ * collected from the `DirectiveDef.hostAttrs`. A styling instruction needs to collect all data
6794
+ * since last styling instruction.
6795
+ */
6796
+ directiveStylingLast: number;
6732
6797
  /**
6733
6798
  * Stores indexes of property bindings. This field is only set in the ngDevMode and holds indexes
6734
6799
  * of property bindings so TestBed can get bound property metadata for a given node.
@@ -6762,6 +6827,18 @@ declare interface TNode {
6762
6827
  * namespaces, attributes extracted from bindings and outputs).
6763
6828
  */
6764
6829
  attrs: TAttributes | null;
6830
+ /**
6831
+ * Same as `TNode.attrs` but contains merged data across all directive host bindings.
6832
+ *
6833
+ * We need to keep `attrs` as unmerged so that it can be used for attribute selectors.
6834
+ * We merge attrs here so that it can be used in a performant way for initial rendering.
6835
+ *
6836
+ * The `attrs` are merged in first pass in following order:
6837
+ * - Component's `hostAttrs`
6838
+ * - Directives' `hostAttrs`
6839
+ * - Template `TNode.attrs` associated with the current `TNode`.
6840
+ */
6841
+ mergedAttrs: TAttributes | null;
6765
6842
  /**
6766
6843
  * A set of local names under which a given element is exported in a template and
6767
6844
  * visible to queries. An entry in this array can be created for different reasons:
@@ -6846,7 +6923,7 @@ declare interface TNode {
6846
6923
  *
6847
6924
  * If this is an inline view node (V), the parent will be its container.
6848
6925
  */
6849
- parent: ɵangular_packages_core_core_bb | TContainerNode | null;
6926
+ parent: ɵangular_packages_core_core_be | TContainerNode | null;
6850
6927
  /**
6851
6928
  * List of projected TNodes for a given component host element OR index into the said nodes.
6852
6929
  *
@@ -6888,43 +6965,87 @@ declare interface TNode {
6888
6965
  */
6889
6966
  projection: (TNode | RNode[])[] | number | null;
6890
6967
  /**
6891
- * A collection of all style bindings and/or static style values for an element.
6968
+ * A collection of all style static values for an element.
6892
6969
  *
6893
6970
  * This field will be populated if and when:
6894
6971
  *
6895
6972
  * - There are one or more initial styles on an element (e.g. `<div style="width:200px">`)
6896
- * - There are one or more style bindings on an element (e.g. `<div [style.width]="w">`)
6973
+ */
6974
+ styles: string | null;
6975
+ /**
6976
+ * A `KeyValueArray` version of residual `styles`.
6897
6977
  *
6898
- * If and when there are only initial styles (no bindings) then an instance of `StylingMapArray`
6899
- * will be used here. Otherwise an instance of `TStylingContext` will be created when there
6900
- * are one or more style bindings on an element.
6978
+ * When there are styling instructions than each instruction stores the static styling
6979
+ * which is of lower priority than itself. This means that there may be a higher priority styling
6980
+ * than the instruction.
6901
6981
  *
6902
- * During element creation this value is likely to be populated with an instance of
6903
- * `StylingMapArray` and only when the bindings are evaluated (which happens during
6904
- * update mode) then it will be converted to a `TStylingContext` if any style bindings
6905
- * are encountered. If and when this happens then the existing `StylingMapArray` value
6906
- * will be placed into the initial styling slot in the newly created `TStylingContext`.
6982
+ * Imagine:
6983
+ * ```
6984
+ * <div style="color: highest;" my-dir>
6985
+ *
6986
+ * @Directive({
6987
+ * host: {
6988
+ * style: 'color: lowest; ',
6989
+ * '[styles.color]': 'exp' // ɵɵstyleProp('color', ctx.exp);
6990
+ * }
6991
+ * })
6992
+ * ```
6993
+ *
6994
+ * In the above case:
6995
+ * - `color: lowest` is stored with `ɵɵstyleProp('color', ctx.exp);` instruction
6996
+ * - `color: highest` is the residual and is stored here.
6997
+ *
6998
+ * - `undefined': not initialized.
6999
+ * - `null`: initialized but `styles` is `null`
7000
+ * - `KeyValueArray`: parsed version of `styles`.
6907
7001
  */
6908
- styles: StylingMapArray | TStylingContext | null;
7002
+ residualStyles: KeyValueArray<any> | undefined | null;
6909
7003
  /**
6910
- * A collection of all class bindings and/or static class values for an element.
7004
+ * A collection of all class static values for an element.
6911
7005
  *
6912
7006
  * This field will be populated if and when:
6913
7007
  *
6914
7008
  * - There are one or more initial classes on an element (e.g. `<div class="one two three">`)
6915
- * - There are one or more class bindings on an element (e.g. `<div [class.foo]="f">`)
7009
+ */
7010
+ classes: string | null;
7011
+ /**
7012
+ * A `KeyValueArray` version of residual `classes`.
6916
7013
  *
6917
- * If and when there are only initial classes (no bindings) then an instance of `StylingMapArray`
6918
- * will be used here. Otherwise an instance of `TStylingContext` will be created when there
6919
- * are one or more class bindings on an element.
7014
+ * Same as `TNode.residualStyles` but for classes.
6920
7015
  *
6921
- * During element creation this value is likely to be populated with an instance of
6922
- * `StylingMapArray` and only when the bindings are evaluated (which happens during
6923
- * update mode) then it will be converted to a `TStylingContext` if any class bindings
6924
- * are encountered. If and when this happens then the existing `StylingMapArray` value
6925
- * will be placed into the initial styling slot in the newly created `TStylingContext`.
7016
+ * - `undefined': not initialized.
7017
+ * - `null`: initialized but `classes` is `null`
7018
+ * - `KeyValueArray`: parsed version of `classes`.
6926
7019
  */
6927
- classes: StylingMapArray | TStylingContext | null;
7020
+ residualClasses: KeyValueArray<any> | undefined | null;
7021
+ /**
7022
+ * Stores the head/tail index of the class bindings.
7023
+ *
7024
+ * - If no bindings, the head and tail will both be 0.
7025
+ * - If there are template bindings, stores the head/tail of the class bindings in the template.
7026
+ * - If no template bindings but there are host bindings, the head value will point to the last
7027
+ * host binding for "class" (not the head of the linked list), tail will be 0.
7028
+ *
7029
+ * See: `style_binding_list.ts` for details.
7030
+ *
7031
+ * This is used by `insertTStylingBinding` to know where the next styling binding should be
7032
+ * inserted so that they can be sorted in priority order.
7033
+ */
7034
+ classBindings: TStylingRange;
7035
+ /**
7036
+ * Stores the head/tail index of the class bindings.
7037
+ *
7038
+ * - If no bindings, the head and tail will both be 0.
7039
+ * - If there are template bindings, stores the head/tail of the style bindings in the template.
7040
+ * - If no template bindings but there are host bindings, the head value will point to the last
7041
+ * host binding for "style" (not the head of the linked list), tail will be 0.
7042
+ *
7043
+ * See: `style_binding_list.ts` for details.
7044
+ *
7045
+ * This is used by `insertTStylingBinding` to know where the next styling binding should be
7046
+ * inserted so that they can be sorted in priority order.
7047
+ */
7048
+ styleBindings: TStylingRange;
6928
7049
  }
6929
7050
 
6930
7051
  /**
@@ -6955,99 +7076,7 @@ declare const enum TNodeFlags {
6955
7076
  * This flags allows us to guard host-binding logic and invoke it only on nodes
6956
7077
  * that actually have directives with host bindings.
6957
7078
  */
6958
- hasHostBindings = 128,
6959
- /** Bit #9 - This bit is set if the node has initial styling */
6960
- hasInitialStyling = 256,
6961
- /**
6962
- * Bit #10 - Whether or not there are class-based map bindings present.
6963
- *
6964
- * Examples include:
6965
- * 1. `<div [class]="x">`
6966
- * 2. `@HostBinding('class') x`
6967
- */
6968
- hasClassMapBindings = 512,
6969
- /**
6970
- * Bit #11 - Whether or not there are any class-based prop bindings present.
6971
- *
6972
- * Examples include:
6973
- * 1. `<div [class.name]="x">`
6974
- * 2. `@HostBinding('class.name') x`
6975
- */
6976
- hasClassPropBindings = 1024,
6977
- /**
6978
- * Bit #12 - whether or not there are any active [class] and [class.name] bindings
6979
- */
6980
- hasClassPropAndMapBindings = 1536,
6981
- /**
6982
- * Bit #13 - Whether or not the context contains one or more class-based template bindings.
6983
- *
6984
- * Examples include:
6985
- * 1. `<div [class]="x">`
6986
- * 2. `<div [class.name]="x">`
6987
- */
6988
- hasTemplateClassBindings = 2048,
6989
- /**
6990
- * Bit #14 - Whether or not the context contains one or more class-based host bindings.
6991
- *
6992
- * Examples include:
6993
- * 1. `@HostBinding('class') x`
6994
- * 2. `@HostBinding('class.name') x`
6995
- */
6996
- hasHostClassBindings = 4096,
6997
- /**
6998
- * Bit #15 - Whether or not there are two or more sources for a class property in the context.
6999
- *
7000
- * Examples include:
7001
- * 1. prop + prop: `<div [class.active]="x" dir-that-sets-active-class>`
7002
- * 2. map + prop: `<div [class]="x" [class.foo]>`
7003
- * 3. map + map: `<div [class]="x" dir-that-sets-class>`
7004
- */
7005
- hasDuplicateClassBindings = 8192,
7006
- /**
7007
- * Bit #16 - Whether or not there are style-based map bindings present.
7008
- *
7009
- * Examples include:
7010
- * 1. `<div [style]="x">`
7011
- * 2. `@HostBinding('style') x`
7012
- */
7013
- hasStyleMapBindings = 16384,
7014
- /**
7015
- * Bit #17 - Whether or not there are any style-based prop bindings present.
7016
- *
7017
- * Examples include:
7018
- * 1. `<div [style.prop]="x">`
7019
- * 2. `@HostBinding('style.prop') x`
7020
- */
7021
- hasStylePropBindings = 32768,
7022
- /**
7023
- * Bit #18 - whether or not there are any active [style] and [style.prop] bindings
7024
- */
7025
- hasStylePropAndMapBindings = 49152,
7026
- /**
7027
- * Bit #19 - Whether or not the context contains one or more style-based template bindings.
7028
- *
7029
- * Examples include:
7030
- * 1. `<div [style]="x">`
7031
- * 2. `<div [style.prop]="x">`
7032
- */
7033
- hasTemplateStyleBindings = 65536,
7034
- /**
7035
- * Bit #20 - Whether or not the context contains one or more style-based host bindings.
7036
- *
7037
- * Examples include:
7038
- * 1. `@HostBinding('style') x`
7039
- * 2. `@HostBinding('style.prop') x`
7040
- */
7041
- hasHostStyleBindings = 131072,
7042
- /**
7043
- * Bit #21 - Whether or not there are two or more sources for a style property in the context.
7044
- *
7045
- * Examples include:
7046
- * 1. prop + prop: `<div [style.width]="x" dir-that-sets-width>`
7047
- * 2. map + prop: `<div [style]="x" [style.prop]>`
7048
- * 3. map + map: `<div [style]="x" dir-that-sets-style>`
7049
- */
7050
- hasDuplicateStyleBindings = 262144
7079
+ hasHostBindings = 128
7051
7080
  }
7052
7081
 
7053
7082
  /**
@@ -7095,7 +7124,7 @@ declare const enum TNodeType {
7095
7124
  /**
7096
7125
  * Type representing a set of TNodes that can have local refs (`#foo`) placed on them.
7097
7126
  */
7098
- declare type TNodeWithLocalRefs = TContainerNode | ɵangular_packages_core_core_bb | TElementContainerNode;
7127
+ declare type TNodeWithLocalRefs = TContainerNode | ɵangular_packages_core_core_be | TElementContainerNode;
7099
7128
 
7100
7129
  /** Static data for an LProjectionNode */
7101
7130
  declare interface TProjectionNode extends TNode {
@@ -7106,7 +7135,7 @@ declare interface TProjectionNode extends TNode {
7106
7135
  * or embedded view (which means their parent is in a different view and must be
7107
7136
  * retrieved using LView.node).
7108
7137
  */
7109
- parent: ɵangular_packages_core_core_bb | TElementContainerNode | null;
7138
+ parent: ɵangular_packages_core_core_be | TElementContainerNode | null;
7110
7139
  tViews: null;
7111
7140
  /** Index of the projection node. (See TNode.projection for more info.) */
7112
7141
  projection: number;
@@ -7301,334 +7330,117 @@ export declare const TRANSLATIONS: InjectionToken<string>;
7301
7330
  export declare const TRANSLATIONS_FORMAT: InjectionToken<string>;
7302
7331
 
7303
7332
  /**
7304
- * --------
7333
+ * Value stored in the `TData` which is needed to re-concatenate the styling.
7305
7334
  *
7306
- * This file contains the core interfaces for styling in Angular.
7307
- *
7308
- * To learn more about the algorithm see `TStylingContext`.
7335
+ * See: `TStylingKeyPrimitive` and `TStylingStatic`
7336
+ */
7337
+ declare type TStylingKey = TStylingKeyPrimitive | TStylingStatic;
7338
+
7339
+ /**
7340
+ * The primitive portion (`TStylingStatic` removed) of the value stored in the `TData` which is
7341
+ * needed to re-concatenate the styling.
7309
7342
  *
7310
- * --------
7343
+ * - `string`: Stores the property name. Used with `ɵɵstyleProp`/`ɵɵclassProp` instruction.
7344
+ * - `null`: Represents map, so there is no name. Used with `ɵɵstyleMap`/`ɵɵclassMap`.
7345
+ * - `false`: Represents an ignore case. This happens when `ɵɵstyleProp`/`ɵɵclassProp` instruction
7346
+ * is combined with directive which shadows its input `@Input('class')`. That way the binding
7347
+ * should not participate in the styling resolution.
7311
7348
  */
7349
+ declare type TStylingKeyPrimitive = string | null | false;
7350
+
7312
7351
  /**
7313
- * A static-level representation of all style or class bindings/values
7314
- * associated with a `TNode`.
7352
+ * This is a branded number which contains previous and next index.
7315
7353
  *
7316
- * The `TStylingContext` unites all template styling bindings (i.e.
7317
- * `[class]` and `[style]` bindings) as well as all host-level
7318
- * styling bindings (for components and directives) together into
7319
- * a single manifest
7354
+ * When we come across styling instructions we need to store the `TStylingKey` in the correct
7355
+ * order so that we can re-concatenate the styling value in the desired priority.
7320
7356
  *
7321
- * The styling context is stored on a `TNode` on and there are
7322
- * two instances of it: one for classes and another for styles.
7357
+ * The insertion can happen either at the:
7358
+ * - end of template as in the case of coming across additional styling instruction in the template
7359
+ * - in front of the template in the case of coming across additional instruction in the
7360
+ * `hostBindings`.
7323
7361
  *
7324
- * ```typescript
7325
- * tNode.styles = [ ... a context only for styles ... ];
7326
- * tNode.classes = [ ... a context only for classes ... ];
7327
- * ```
7362
+ * We use `TStylingRange` to store the previous and next index into the `TData` where the template
7363
+ * bindings can be found.
7328
7364
  *
7329
- * The styling context is created each time there are one or more
7330
- * styling bindings (style or class bindings) present for an element,
7331
- * but is only created once per `TNode`.
7365
+ * - bit 0 is used to mark that the previous index has a duplicate for current value.
7366
+ * - bit 1 is used to mark that the next index has a duplicate for the current value.
7367
+ * - bits 2-16 are used to encode the next/tail of the template.
7368
+ * - bits 17-32 are used to encode the previous/head of template.
7332
7369
  *
7333
- * `tNode.styles` and `tNode.classes` can be an instance of the following:
7370
+ * NODE: *duplicate* false implies that it is statically known that this binding will not collide
7371
+ * with other bindings and therefore there is no need to check other bindings. For example the
7372
+ * bindings in `<div [style.color]="exp" [style.width]="exp">` will never collide and will have
7373
+ * their bits set accordingly. Previous duplicate means that we may need to check previous if the
7374
+ * current binding is `null`. Next duplicate means that we may need to check next bindings if the
7375
+ * current binding is not `null`.
7334
7376
  *
7335
- * ```typescript
7336
- * tNode.styles = null; // no static styling or styling bindings active
7337
- * tNode.styles = StylingMapArray; // only static values present (e.g. `<div style="width:200">`)
7338
- * tNode.styles = TStylingContext; // one or more styling bindings present (e.g. `<div
7339
- * [style.width]>`)
7340
- * ```
7341
- *
7342
- * Both `tNode.styles` and `tNode.classes` are instantiated when anything
7343
- * styling-related is active on an element. They are first created from
7344
- * from the any of the element-level instructions (e.g. `element`,
7345
- * `elementStart`, `elementHostAttrs`). When any static style/class
7346
- * values are encountered they are registered on the `tNode.styles`
7347
- * and `tNode.classes` data-structures. By default (when any static
7348
- * values are encountered) the `tNode.styles` or `tNode.classes` values
7349
- * are instances of a `StylingMapArray`. Only when style/class bindings
7350
- * are detected then that styling map is converted into an instance of
7351
- * `TStylingContext`.
7352
- *
7353
- * Due to the fact the the `TStylingContext` is stored on a `TNode`
7354
- * this means that all data within the context is static. Instead of
7355
- * storing actual styling binding values, the lView binding index values
7356
- * are stored within the context. (static nature means it is more compact.)
7357
- *
7358
- * The code below shows a breakdown of two instances of `TStylingContext`
7359
- * (one for `tNode.styles` and another for `tNode.classes`):
7377
+ * NOTE: `0` has special significance and represents `null` as in no additional pointer.
7378
+ */
7379
+ declare interface TStylingRange {
7380
+ __brand__: 'TStylingRange';
7381
+ }
7382
+
7383
+ /**
7384
+ * Store the static values for the styling binding.
7360
7385
  *
7361
- * ```typescript
7362
- * // <div [class.active]="c" // lView binding index = 20
7363
- * // [style.width]="x" // lView binding index = 21
7364
- * // [style.height]="y"> // lView binding index = 22
7365
- * // ...
7366
- * // </div>
7367
- * tNode.styles = [
7368
- * 1, // the total amount of sources present (only `1` b/c there are only template
7369
- * bindings)
7370
- * [null], // initial values array (an instance of `StylingMapArray`)
7371
- *
7372
- * 0, // config entry for the property (see `TStylingContextPropConfigFlags`)
7373
- * 0b010, // template guard mask for height
7374
- * 0, // host bindings guard mask for height
7375
- * 'height', // the property name
7376
- * 22, // the binding location for the "y" binding in the lView
7377
- * null, // the default value for height
7378
- *
7379
- * 0, // config entry for the property (see `TStylingContextPropConfigFlags`)
7380
- * 0b001, // template guard mask for width
7381
- * 0, // host bindings guard mask for width
7382
- * 'width', // the property name
7383
- * 21, // the binding location for the "x" binding in the lView
7384
- * null, // the default value for width
7385
- * ];
7386
+ * The `TStylingStatic` is just `KeyValueArray` where key `""` (stored at location 0) contains the
7387
+ * `TStylingKey` (stored at location 1). In other words this wraps the `TStylingKey` such that the
7388
+ * `""` contains the wrapped value.
7386
7389
  *
7387
- * tNode.classes = [
7388
- * 0, // the context config value (see `TStylingContextConfig`)
7389
- * 1, // the total amount of sources present (only `1` b/c there are only template
7390
- * bindings)
7391
- * [null], // initial values array (an instance of `StylingMapArray`)
7392
- *
7393
- * 0, // config entry for the property (see `TStylingContextPropConfigFlags`)
7394
- * 0b001, // template guard mask for width
7395
- * 0, // host bindings guard mask for width
7396
- * 'active', // the property name
7397
- * 20, // the binding location for the "c" binding in the lView
7398
- * null, // the default value for the `active` class
7399
- * ];
7400
- * ```
7390
+ * When instructions are resolving styling they may need to look forward or backwards in the linked
7391
+ * list to resolve the value. For this reason we have to make sure that he linked list also contains
7392
+ * the static values. However the list only has space for one item per styling instruction. For this
7393
+ * reason we store the static values here as part of the `TStylingKey`. This means that the
7394
+ * resolution function when looking for a value needs to first look at the binding value, and than
7395
+ * at `TStylingKey` (if it exists).
7401
7396
  *
7402
- * Entry value present in an entry (called a tuple) within the
7403
- * styling context is as follows:
7397
+ * Imagine we have:
7404
7398
  *
7405
- * ```typescript
7406
- * context = [
7407
- * //...
7408
- * configValue,
7409
- * templateGuardMask,
7410
- * hostBindingsGuardMask,
7411
- * propName,
7412
- * ...bindingIndices...,
7413
- * defaultValue
7414
- * //...
7415
- * ];
7416
7399
  * ```
7400
+ * <div class="TEMPLATE" my-dir>
7417
7401
  *
7418
- * Below is a breakdown of each value:
7419
- *
7420
- * - **configValue**:
7421
- * Property-specific configuration values. The only config setting
7422
- * that is implemented right now is whether or not to sanitize the
7423
- * value.
7424
- *
7425
- * - **templateGuardMask**:
7426
- * A numeric value where each bit represents a binding index
7427
- * location. Each binding index location is assigned based on
7428
- * a local counter value that increments each time an instruction
7429
- * is called:
7430
- *
7431
- * ```
7432
- * <div [style.width]="x" // binding index = 21 (counter index = 0)
7433
- * [style.height]="y"> // binding index = 22 (counter index = 1)
7434
- * ```
7435
- *
7436
- * In the example code above, if the `width` value where to change
7437
- * then the first bit in the local bit mask value would be flipped
7438
- * (and the second bit for when `height`).
7439
- *
7440
- * If and when there are more than 32 binding sources in the context
7441
- * (more than 32 `[style/class]` bindings) then the bit masking will
7442
- * overflow and we are left with a situation where a `-1` value will
7443
- * represent the bit mask. Due to the way that JavaScript handles
7444
- * negative values, when the bit mask is `-1` then all bits within
7445
- * that value will be automatically flipped (this is a quick and
7446
- * efficient way to flip all bits on the mask when a special kind
7447
- * of caching scenario occurs or when there are more than 32 bindings).
7448
- *
7449
- * - **hostBindingsGuardMask**:
7450
- * Another instance of a guard mask that is specific to host bindings.
7451
- * This behaves exactly the same way as does the `templateGuardMask`,
7452
- * but will not contain any binding information processed in the template.
7453
- * The reason why there are two instances of guard masks (one for the
7454
- * template and another for host bindings) is because the template bindings
7455
- * are processed before host bindings and the state information is not
7456
- * carried over into the host bindings code. As soon as host bindings are
7457
- * processed for an element the counter and state-based bit mask values are
7458
- * set to `0`.
7459
- *
7460
- * ```
7461
- * <div [style.width]="x" // binding index = 21 (counter index = 0)
7462
- * [style.height]="y" // binding index = 22 (counter index = 1)
7463
- * dir-that-sets-width // binding index = 30 (counter index = 0)
7464
- * dir-that-sets-width> // binding index = 31 (counter index = 1)
7465
- * ```
7466
- *
7467
- * - **propName**:
7468
- * The CSS property name or class name (e.g `width` or `active`).
7469
- *
7470
- * - **bindingIndices...**:
7471
- * A series of numeric binding values that reflect where in the
7472
- * lView to find the style/class values associated with the property.
7473
- * Each value is in order in terms of priority (templates are first,
7474
- * then directives and then components). When the context is flushed
7475
- * and the style/class values are applied to the element (this happens
7476
- * inside of the `stylingApply` instruction) then the flushing code
7477
- * will keep checking each binding index against the associated lView
7478
- * to find the first style/class value that is non-null.
7479
- *
7480
- * - **defaultValue**:
7481
- * This is the default that will always be applied to the element if
7482
- * and when all other binding sources return a result that is null.
7483
- * Usually this value is `null` but it can also be a static value that
7484
- * is intercepted when the tNode is first constructured (e.g.
7485
- * `<div style="width:200px">` has a default value of `200px` for
7486
- * the `width` property).
7487
- *
7488
- * Each time a new binding is encountered it is registered into the
7489
- * context. The context then is continually updated until the first
7490
- * styling apply call has been called (which is automatically scheduled
7491
- * to be called once an element exits during change detection). Note that
7492
- * each entry in the context is stored in alphabetical order.
7493
- *
7494
- * Once styling has been flushed for the first time for an element the
7495
- * context will set as locked (this prevents bindings from being added
7496
- * to the context later on).
7497
- *
7498
- * # How Styles/Classes are Rendered
7499
- * Each time a styling instruction (e.g. `[class.name]`, `[style.prop]`,
7500
- * etc...) is executed, the associated `lView` for the view is updated
7501
- * at the current binding location. Also, when this happens, a local
7502
- * counter value is incremented. If the binding value has changed then
7503
- * a local `bitMask` variable is updated with the specific bit based
7504
- * on the counter value.
7505
- *
7506
- * Below is a lightweight example of what happens when a single style
7507
- * property is updated (i.e. `<div [style.prop]="val">`):
7508
- *
7509
- * ```typescript
7510
- * function updateStyleProp(prop: string, value: string) {
7511
- * const lView = getLView();
7512
- * const bindingIndex = BINDING_INDEX++;
7513
- *
7514
- * // update the local counter value
7515
- * const indexForStyle = stylingState.stylesCount++;
7516
- * if (lView[bindingIndex] !== value) {
7517
- * lView[bindingIndex] = value;
7518
- *
7519
- * // tell the local state that we have updated a style value
7520
- * // by updating the bit mask
7521
- * stylingState.bitMaskForStyles |= 1 << indexForStyle;
7402
+ * @Directive({
7403
+ * host: {
7404
+ * class: 'DIR',
7405
+ * '[class.dynamic]': 'exp' // ɵɵclassProp('dynamic', ctx.exp);
7522
7406
  * }
7523
- * }
7407
+ * })
7524
7408
  * ```
7525
7409
  *
7526
- * Once all the bindings have updated a `bitMask` value will be populated.
7527
- * This `bitMask` value is used in the apply algorithm (which is called
7528
- * context resolution).
7529
- *
7530
- * ## The Apply Algorithm (Context Resolution)
7531
- * As explained above, each time a binding updates its value, the resulting
7532
- * value is stored in the `lView` array. These styling values have yet to
7533
- * be flushed to the element.
7534
- *
7535
- * Once all the styling instructions have been evaluated, then the styling
7536
- * context(s) are flushed to the element. When this happens, the context will
7537
- * be iterated over (property by property) and each binding source will be
7538
- * examined and the first non-null value will be applied to the element.
7410
+ * In the above case the linked list will contain one item:
7539
7411
  *
7540
- * Let's say that we the following template code:
7541
- *
7542
- * ```html
7543
- * <div [style.width]="w1" dir-that-set-width="w2"></div>
7544
7412
  * ```
7413
+ * // assume binding location: 10 for `ɵɵclassProp('dynamic', ctx.exp);`
7414
+ * tData[10] = <TStylingStatic>[
7415
+ * '': 'dynamic', // This is the wrapped value of `TStylingKey`
7416
+ * 'DIR': true, // This is the default static value of directive binding.
7417
+ * ];
7418
+ * tData[10 + 1] = 0; // We don't have prev/next.
7545
7419
  *
7546
- * There are two styling bindings in the code above and they both write
7547
- * to the `width` property. When styling is flushed on the element, the
7548
- * algorithm will try and figure out which one of these values to write
7549
- * to the element.
7550
- *
7551
- * In order to figure out which value to apply, the following
7552
- * binding prioritization is adhered to:
7553
- *
7554
- * 1. First template-level styling bindings are applied (if present).
7555
- * This includes things like `[style.width]` and `[class.active]`.
7556
- *
7557
- * 2. Second are styling-level host bindings present in directives.
7558
- * (if there are sub/super directives present then the sub directives
7559
- * are applied first).
7560
- *
7561
- * 3. Third are styling-level host bindings present in components.
7562
- * (if there are sub/super components present then the sub directives
7563
- * are applied first).
7564
- *
7565
- * This means that in the code above the styling binding present in the
7566
- * template is applied first and, only if its falsy, then the directive
7567
- * styling binding for width will be applied.
7568
- *
7569
- * ### What about map-based styling bindings?
7570
- * Map-based styling bindings are activated when there are one or more
7571
- * `[style]` and/or `[class]` bindings present on an element. When this
7572
- * code is activated, the apply algorithm will iterate over each map
7573
- * entry and apply each styling value to the element with the same
7574
- * prioritization rules as above.
7575
- *
7576
- * For the algorithm to apply styling values efficiently, the
7577
- * styling map entries must be applied in sync (property by property)
7578
- * with prop-based bindings. (The map-based algorithm is described
7579
- * more inside of the `render3/styling/map_based_bindings.ts` file.)
7580
- *
7581
- * ## Sanitization
7582
- * Sanitization is used to prevent invalid style values from being applied to
7583
- * the element.
7584
- *
7585
- * It is enabled in two cases:
7586
- *
7587
- * 1. The `styleSanitizer(sanitizerFn)` instruction was called (just before any other
7588
- * styling instructions are run).
7589
- *
7590
- * 2. The component/directive `LView` instance has a sanitizer object attached to it
7591
- * (this happens when `renderComponent` is executed with a `sanitizer` value or
7592
- * if the ngModule contains a sanitizer provider attached to it).
7593
- *
7594
- * If and when sanitization is active then all property/value entries will be evaluated
7595
- * through the active sanitizer before they are applied to the element (or the styling
7596
- * debug handler).
7597
- *
7598
- * If a `Sanitizer` object is used (via the `LView[SANITIZER]` value) then that object
7599
- * will be used for every property.
7600
- *
7601
- * If a `StyleSanitizerFn` function is used (via the `styleSanitizer`) then it will be
7602
- * called in two ways:
7420
+ * lView[10] = undefined; // assume `ctx.exp` is `undefined`
7421
+ * lView[10 + 1] = undefined; // Just normalized `lView[10]`
7422
+ * ```
7603
7423
  *
7604
- * 1. property validation mode: this will be called early to mark whether a property
7605
- * should be sanitized or not at during the flushing stage.
7424
+ * So when the function is resolving styling value, it first needs to look into the linked list
7425
+ * (there is none) and than into the static `TStylingStatic` too see if there is a default value for
7426
+ * `dynamic` (there is not). Therefore it is safe to remove it.
7606
7427
  *
7607
- * 2. value sanitization mode: this will be called during the flushing stage and will
7608
- * run the sanitizer function against the value before applying it to the element.
7428
+ * If setting `true` case:
7429
+ * ```
7430
+ * lView[10] = true; // assume `ctx.exp` is `true`
7431
+ * lView[10 + 1] = true; // Just normalized `lView[10]`
7432
+ * ```
7433
+ * So when the function is resolving styling value, it first needs to look into the linked list
7434
+ * (there is none) and than into `TNode.residualClass` (TNode.residualStyle) which contains
7435
+ * ```
7436
+ * tNode.residualClass = [
7437
+ * 'TEMPLATE': true,
7438
+ * ];
7439
+ * ```
7609
7440
  *
7610
- * If sanitization returns an empty value then that empty value will be applied
7611
- * to the element.
7441
+ * This means that it is safe to add class.
7612
7442
  */
7613
- declare interface TStylingContext extends Array<number | string | number | boolean | null | StylingMapArray | {}> {
7614
- /** The total amount of sources present in the context */
7615
- [TStylingContextIndex.TotalSourcesPosition]: number;
7616
- /** Initial value position for static styles */
7617
- [TStylingContextIndex.InitialStylingValuePosition]: StylingMapArray;
7618
- }
7619
-
7620
- /**
7621
- * An index of position and offset values used to navigate the `TStylingContext`.
7622
- */
7623
- declare const enum TStylingContextIndex {
7624
- TotalSourcesPosition = 0,
7625
- InitialStylingValuePosition = 1,
7626
- ValuesStartPosition = 2,
7627
- ConfigOffset = 0,
7628
- TemplateBitGuardOffset = 1,
7629
- HostBindingsBitGuardOffset = 2,
7630
- PropOffset = 3,
7631
- BindingsStartOffset = 4
7443
+ declare interface TStylingStatic extends KeyValueArray<any> {
7632
7444
  }
7633
7445
 
7634
7446
  /** Static data for a text node */
@@ -7641,7 +7453,7 @@ declare interface TTextNode extends TNode {
7641
7453
  * embedded view (which means their parent is in a different view and must be
7642
7454
  * retrieved using LView.node).
7643
7455
  */
7644
- parent: ɵangular_packages_core_core_bb | TElementContainerNode | null;
7456
+ parent: ɵangular_packages_core_core_be | TElementContainerNode | null;
7645
7457
  tViews: null;
7646
7458
  projection: null;
7647
7459
  }
@@ -7671,7 +7483,7 @@ declare interface TView {
7671
7483
  * This is a blueprint used to generate LView instances for this TView. Copying this
7672
7484
  * blueprint is faster than creating a new LView from scratch.
7673
7485
  */
7674
- blueprint: ɵangular_packages_core_core_bg;
7486
+ blueprint: ɵangular_packages_core_core_bo;
7675
7487
  /**
7676
7488
  * The template function used to refresh the view of dynamically created views
7677
7489
  * and components. Will be null for inline views.
@@ -7696,10 +7508,20 @@ declare interface TView {
7696
7508
  * different host TNodes, depending on where the component is being used. These host
7697
7509
  * TNodes cannot be shared (due to different indices, etc).
7698
7510
  */
7699
- node: TViewNode | ɵangular_packages_core_core_bb | null;
7511
+ node: TViewNode | ɵangular_packages_core_core_be | null;
7700
7512
  /** Whether or not this template has been processed in creation mode. */
7701
7513
  firstCreatePass: boolean;
7702
- /** Whether or not the first update for this template has been processed. */
7514
+ /**
7515
+ * Whether or not this template has been processed in update mode (e.g. change detected)
7516
+ *
7517
+ * `firstUpdatePass` is used by styling to set up `TData` to contain metadata about the styling
7518
+ * instructions. (Mainly to build up a linked list of styling priority order.)
7519
+ *
7520
+ * Typically this function gets cleared after first execution. If exception is thrown then this
7521
+ * flag can remain turned un until there is first successful (no exception) pass. This means that
7522
+ * individual styling instructions keep track of if they have already been added to the linked
7523
+ * list to prevent double adding.
7524
+ */
7703
7525
  firstUpdatePass: boolean;
7704
7526
  /** Static data equivalent of LView.data[]. Contains TNodes, PipeDefInternal or TI18n. */
7705
7527
  data: TData;
@@ -7882,7 +7704,7 @@ declare interface TView {
7882
7704
  declare interface TViewNode extends TNode {
7883
7705
  /** If -1, it's a dynamically created view. Otherwise, it is the view block ID. */
7884
7706
  index: number;
7885
- child: ɵangular_packages_core_core_bb | TTextNode | TElementContainerNode | TContainerNode | TProjectionNode | null;
7707
+ child: ɵangular_packages_core_core_be | TTextNode | TElementContainerNode | TContainerNode | TProjectionNode | null;
7886
7708
  parent: TContainerNode | null;
7887
7709
  tViews: null;
7888
7710
  projection: null;
@@ -8190,13 +8012,13 @@ export declare abstract class ViewContainerRef {
8190
8012
  *
8191
8013
  * <!-- TODO: rename to anchorElement -->
8192
8014
  */
8193
- abstract readonly element: ElementRef;
8015
+ abstract get element(): ElementRef;
8194
8016
  /**
8195
8017
  * The [dependency injector](guide/glossary#injector) for this view container.
8196
8018
  */
8197
- abstract readonly injector: Injector;
8019
+ abstract get injector(): Injector;
8198
8020
  /** @deprecated No replacement */
8199
- abstract readonly parentInjector: Injector;
8021
+ abstract get parentInjector(): Injector;
8200
8022
  /**
8201
8023
  * Destroys all views in this container.
8202
8024
  */
@@ -8211,7 +8033,7 @@ export declare abstract class ViewContainerRef {
8211
8033
  * Reports how many views are currently attached to this container.
8212
8034
  * @returns The number of views.
8213
8035
  */
8214
- abstract readonly length: number;
8036
+ abstract get length(): number;
8215
8037
  /**
8216
8038
  * Instantiates an embedded view and inserts it
8217
8039
  * into this container.
@@ -8376,7 +8198,7 @@ export declare abstract class ViewRef extends ChangeDetectorRef {
8376
8198
  * Reports whether this view has been destroyed.
8377
8199
  * @returns True after the `destroy()` method has been called, false otherwise.
8378
8200
  */
8379
- abstract readonly destroyed: boolean;
8201
+ abstract get destroyed(): boolean;
8380
8202
  /**
8381
8203
  * A lifecycle hook that provides additional developer-defined cleanup
8382
8204
  * functionality for views.
@@ -8396,7 +8218,7 @@ declare class ViewRef_2<T> implements EmbeddedViewRef<T>, InternalViewRef, viewE
8396
8218
  private _cdRefInjectingView?;
8397
8219
  private _appRef;
8398
8220
  private _viewContainerRef;
8399
- readonly rootNodes: any[];
8221
+ get rootNodes(): any[];
8400
8222
  constructor(
8401
8223
  /**
8402
8224
  * This represents `LView` associated with the component when ViewRef is a ChangeDetectorRef.
@@ -8409,16 +8231,16 @@ declare class ViewRef_2<T> implements EmbeddedViewRef<T>, InternalViewRef, viewE
8409
8231
  *
8410
8232
  * @internal
8411
8233
  */
8412
- _lView: ɵangular_packages_core_core_bg,
8234
+ _lView: ɵangular_packages_core_core_bo,
8413
8235
  /**
8414
8236
  * This represents the `LView` associated with the point where `ChangeDetectorRef` was
8415
8237
  * requested.
8416
8238
  *
8417
8239
  * This may be different from `_lView` if the `_cdRefInjectingView` is an embedded view.
8418
8240
  */
8419
- _cdRefInjectingView?: ɵangular_packages_core_core_bg | undefined);
8420
- readonly context: T;
8421
- readonly destroyed: boolean;
8241
+ _cdRefInjectingView?: ɵangular_packages_core_core_bo | undefined);
8242
+ get context(): T;
8243
+ get destroyed(): boolean;
8422
8244
  destroy(): void;
8423
8245
  onDestroy(callback: Function): void;
8424
8246
  /**
@@ -8700,19 +8522,28 @@ export declare function ɵangular_packages_core_core_b<T>(token: Type<T> | Injec
8700
8522
 
8701
8523
  export declare function ɵangular_packages_core_core_b<T>(token: Type<T> | InjectionToken<T>, flags?: InjectFlags): T | null;
8702
8524
 
8703
- export declare function ɵangular_packages_core_core_ba<T = any>(level: number): T;
8525
+ /**
8526
+ * Return the current `LView`.
8527
+ */
8528
+ export declare function ɵangular_packages_core_core_ba(): ɵangular_packages_core_core_bo;
8529
+
8530
+ export declare function ɵangular_packages_core_core_bb(): TNode;
8531
+
8532
+ export declare function ɵangular_packages_core_core_bc(): number;
8533
+
8534
+ export declare function ɵangular_packages_core_core_bd<T = any>(level: number): T;
8704
8535
 
8705
8536
  /** Static data for an element */
8706
- export declare interface ɵangular_packages_core_core_bb extends TNode {
8537
+ export declare interface ɵangular_packages_core_core_be extends TNode {
8707
8538
  /** Index in the data[] array */
8708
8539
  index: number;
8709
- child: ɵangular_packages_core_core_bb | TTextNode | TElementContainerNode | TContainerNode | TProjectionNode | null;
8540
+ child: ɵangular_packages_core_core_be | TTextNode | TElementContainerNode | TContainerNode | TProjectionNode | null;
8710
8541
  /**
8711
8542
  * Element nodes will have parents unless they are the first node of a component or
8712
8543
  * embedded view (which means their parent is in a different view and must be
8713
8544
  * retrieved using viewData[HOST_NODE]).
8714
8545
  */
8715
- parent: ɵangular_packages_core_core_bb | TElementContainerNode | null;
8546
+ parent: ɵangular_packages_core_core_be | TElementContainerNode | null;
8716
8547
  tViews: null;
8717
8548
  /**
8718
8549
  * If this is a component TNode with projection, this will be an array of projected
@@ -8722,6 +8553,86 @@ export declare interface ɵangular_packages_core_core_bb extends TNode {
8722
8553
  projection: (TNode | RNode[])[] | null;
8723
8554
  }
8724
8555
 
8556
+ /**
8557
+ * If the value of the provided exp has changed, calls the pure function to return
8558
+ * an updated value. Or if the value has not changed, returns cached value.
8559
+ *
8560
+ * @param lView LView in which the function is being executed.
8561
+ * @param bindingRoot Binding root index.
8562
+ * @param slotOffset the offset from binding root to the reserved slot
8563
+ * @param pureFn Function that returns an updated value
8564
+ * @param exp Updated expression value
8565
+ * @param thisArg Optional calling context of pureFn
8566
+ * @returns Updated or cached value
8567
+ */
8568
+ export declare function ɵangular_packages_core_core_bf(lView: ɵangular_packages_core_core_bo, bindingRoot: number, slotOffset: number, pureFn: (v: any) => any, exp: any, thisArg?: any): any;
8569
+
8570
+ /**
8571
+ * If the value of any provided exp has changed, calls the pure function to return
8572
+ * an updated value. Or if no values have changed, returns cached value.
8573
+ *
8574
+ * @param lView LView in which the function is being executed.
8575
+ * @param bindingRoot Binding root index.
8576
+ * @param slotOffset the offset from binding root to the reserved slot
8577
+ * @param pureFn
8578
+ * @param exp1
8579
+ * @param exp2
8580
+ * @param thisArg Optional calling context of pureFn
8581
+ * @returns Updated or cached value
8582
+ */
8583
+ export declare function ɵangular_packages_core_core_bg(lView: ɵangular_packages_core_core_bo, bindingRoot: number, slotOffset: number, pureFn: (v1: any, v2: any) => any, exp1: any, exp2: any, thisArg?: any): any;
8584
+
8585
+ /**
8586
+ * If the value of any provided exp has changed, calls the pure function to return
8587
+ * an updated value. Or if no values have changed, returns cached value.
8588
+ *
8589
+ * @param lView LView in which the function is being executed.
8590
+ * @param bindingRoot Binding root index.
8591
+ * @param slotOffset the offset from binding root to the reserved slot
8592
+ * @param pureFn
8593
+ * @param exp1
8594
+ * @param exp2
8595
+ * @param exp3
8596
+ * @param thisArg Optional calling context of pureFn
8597
+ * @returns Updated or cached value
8598
+ */
8599
+ export declare function ɵangular_packages_core_core_bh(lView: ɵangular_packages_core_core_bo, bindingRoot: number, slotOffset: number, pureFn: (v1: any, v2: any, v3: any) => any, exp1: any, exp2: any, exp3: any, thisArg?: any): any;
8600
+
8601
+ /**
8602
+ * If the value of any provided exp has changed, calls the pure function to return
8603
+ * an updated value. Or if no values have changed, returns cached value.
8604
+ *
8605
+ * @param lView LView in which the function is being executed.
8606
+ * @param bindingRoot Binding root index.
8607
+ * @param slotOffset the offset from binding root to the reserved slot
8608
+ * @param pureFn
8609
+ * @param exp1
8610
+ * @param exp2
8611
+ * @param exp3
8612
+ * @param exp4
8613
+ * @param thisArg Optional calling context of pureFn
8614
+ * @returns Updated or cached value
8615
+ *
8616
+ */
8617
+ export declare function ɵangular_packages_core_core_bi(lView: ɵangular_packages_core_core_bo, bindingRoot: number, slotOffset: number, pureFn: (v1: any, v2: any, v3: any, v4: any) => any, exp1: any, exp2: any, exp3: any, exp4: any, thisArg?: any): any;
8618
+
8619
+ /**
8620
+ * pureFunction instruction that can support any number of bindings.
8621
+ *
8622
+ * If the value of any provided exp has changed, calls the pure function to return
8623
+ * an updated value. Or if no values have changed, returns cached value.
8624
+ *
8625
+ * @param lView LView in which the function is being executed.
8626
+ * @param bindingRoot Binding root index.
8627
+ * @param slotOffset the offset from binding root to the reserved slot
8628
+ * @param pureFn A pure function that takes binding values and builds an object or array
8629
+ * containing those values.
8630
+ * @param exps An array of binding values
8631
+ * @param thisArg Optional calling context of pureFn
8632
+ * @returns Updated or cached value
8633
+ */
8634
+ export declare function ɵangular_packages_core_core_bj(lView: ɵangular_packages_core_core_bo, bindingRoot: number, slotOffset: number, pureFn: (...v: any[]) => any, exps: any[], thisArg?: any): any;
8635
+
8725
8636
  /**
8726
8637
  * Detects which sanitizer to use for URL property, based on tag name and prop name.
8727
8638
  *
@@ -8729,14 +8640,14 @@ export declare interface ɵangular_packages_core_core_bb extends TNode {
8729
8640
  * `packages/compiler/src/schema/dom_security_schema.ts`.
8730
8641
  * If tag and prop names don't match Resource URL schema, use URL sanitizer.
8731
8642
  */
8732
- export declare function ɵangular_packages_core_core_bc(tag: string, prop: string): typeof ɵɵsanitizeResourceUrl;
8643
+ export declare function ɵangular_packages_core_core_bk(tag: string, prop: string): typeof ɵɵsanitizeResourceUrl;
8733
8644
 
8734
- export declare function ɵangular_packages_core_core_bd(name: string, props?: (...args: any[]) => any, parentClass?: any): any;
8645
+ export declare function ɵangular_packages_core_core_bl(name: string, props?: (...args: any[]) => any, parentClass?: any): any;
8735
8646
 
8736
- export declare function ɵangular_packages_core_core_be(name: string, props?: (...args: any[]) => any, parentClass?: any, additionalProcessing?: (target: any, name: string, ...args: any[]) => void): any;
8647
+ export declare function ɵangular_packages_core_core_bm(name: string, props?: (...args: any[]) => any, parentClass?: any, additionalProcessing?: (target: any, name: string, ...args: any[]) => void): any;
8737
8648
 
8738
8649
 
8739
- export declare function ɵangular_packages_core_core_bf<T>(objWithPropertyToExtract: T): string;
8650
+ export declare function ɵangular_packages_core_core_bn<T>(objWithPropertyToExtract: T): string;
8740
8651
 
8741
8652
  /**
8742
8653
  * `LView` stores all of the information needed to process the instructions as
@@ -8748,7 +8659,7 @@ export declare function ɵangular_packages_core_core_bf<T>(objWithPropertyToExtr
8748
8659
  * Keeping separate state for each view facilities view insertion / deletion, so we
8749
8660
  * don't have to edit the data array based on which views are present.
8750
8661
  */
8751
- export declare interface ɵangular_packages_core_core_bg extends Array<any> {
8662
+ export declare interface ɵangular_packages_core_core_bo extends Array<any> {
8752
8663
  /**
8753
8664
  * The host node for this LView instance, if this is a component view.
8754
8665
  * If this is an embedded view, HOST will be null.
@@ -8771,7 +8682,7 @@ export declare interface ɵangular_packages_core_core_bg extends Array<any> {
8771
8682
  *
8772
8683
  * `LContainer` - The current view is part of a container, and is an embedded view.
8773
8684
  */
8774
- [PARENT]: ɵangular_packages_core_core_bg | LContainer | null;
8685
+ [PARENT]: ɵangular_packages_core_core_bo | LContainer | null;
8775
8686
  /**
8776
8687
  *
8777
8688
  * The next sibling LView or LContainer.
@@ -8781,7 +8692,7 @@ export declare interface ɵangular_packages_core_core_bg extends Array<any> {
8781
8692
  * views in the same container. We need a way to link component views and views
8782
8693
  * across containers as well.
8783
8694
  */
8784
- [NEXT]: ɵangular_packages_core_core_bg | LContainer | null;
8695
+ [NEXT]: ɵangular_packages_core_core_bo | LContainer | null;
8785
8696
  /** Queries active for this view - nodes from a view are reported to those queries. */
8786
8697
  [QUERIES]: LQueries | null;
8787
8698
  /**
@@ -8794,7 +8705,7 @@ export declare interface ɵangular_packages_core_core_bg extends Array<any> {
8794
8705
  *
8795
8706
  * If null, this is the root view of an application (root component is in this view).
8796
8707
  */
8797
- [T_HOST]: TViewNode | ɵangular_packages_core_core_bb | null;
8708
+ [T_HOST]: TViewNode | ɵangular_packages_core_core_be | null;
8798
8709
  /**
8799
8710
  * When a view is destroyed, listeners need to be released and outputs need to be
8800
8711
  * unsubscribed. This context array stores both listener functions wrapped with
@@ -8827,14 +8738,14 @@ export declare interface ɵangular_packages_core_core_bg extends Array<any> {
8827
8738
  * Necessary to store this so views can traverse through their nested views
8828
8739
  * to remove listeners and call onDestroy callbacks.
8829
8740
  */
8830
- [CHILD_HEAD]: ɵangular_packages_core_core_bg | LContainer | null;
8741
+ [CHILD_HEAD]: ɵangular_packages_core_core_bo | LContainer | null;
8831
8742
  /**
8832
8743
  * The last LView or LContainer beneath this LView in the hierarchy.
8833
8744
  *
8834
8745
  * The tail allows us to quickly add a new state to the end of the view list
8835
8746
  * without having to propagate starting from the first child.
8836
8747
  */
8837
- [CHILD_TAIL]: ɵangular_packages_core_core_bg | LContainer | null;
8748
+ [CHILD_TAIL]: ɵangular_packages_core_core_bo | LContainer | null;
8838
8749
  /**
8839
8750
  * View where this view's template was declared.
8840
8751
  *
@@ -8859,7 +8770,7 @@ export declare interface ɵangular_packages_core_core_bg extends Array<any> {
8859
8770
  * template function during change detection, we need the declaration view to get inherited
8860
8771
  * context.
8861
8772
  */
8862
- [DECLARATION_VIEW]: ɵangular_packages_core_core_bg | null;
8773
+ [DECLARATION_VIEW]: ɵangular_packages_core_core_bo | null;
8863
8774
  /**
8864
8775
  * Points to the declaration component view, used to track transplanted `LView`s.
8865
8776
  *
@@ -8929,7 +8840,7 @@ export declare interface ɵangular_packages_core_core_bg extends Array<any> {
8929
8840
  * - `LView[DECLARATION_LCONTAINER]` similar problem for queries
8930
8841
  * - `LContainer[MOVED_VIEWS]` similar problem for queries
8931
8842
  */
8932
- [DECLARATION_COMPONENT_VIEW]: ɵangular_packages_core_core_bg;
8843
+ [DECLARATION_COMPONENT_VIEW]: ɵangular_packages_core_core_bo;
8933
8844
  /**
8934
8845
  * A declaration point of embedded views (ones instantiated based on the content of a
8935
8846
  * <ng-template>), null for other types of views.
@@ -8955,7 +8866,7 @@ export declare interface ɵangular_packages_core_core_bg extends Array<any> {
8955
8866
  * to something which is retained otherwise the call to `noSideEffects` will be removed by closure
8956
8867
  * compiler.
8957
8868
  */
8958
- export declare function ɵangular_packages_core_core_bh(fn: () => void): string;
8869
+ export declare function ɵangular_packages_core_core_bp(fn: () => void): string;
8959
8870
 
8960
8871
  /**
8961
8872
  * Returns the `RootContext` instance that is associated with
@@ -8964,7 +8875,7 @@ export declare function ɵangular_packages_core_core_bh(fn: () => void): string;
8964
8875
  *
8965
8876
  * @param viewOrComponent the `LView` or component to get the root context for.
8966
8877
  */
8967
- export declare function ɵangular_packages_core_core_bi(viewOrComponent: ɵangular_packages_core_core_bg | {}): RootContext;
8878
+ export declare function ɵangular_packages_core_core_bq(viewOrComponent: ɵangular_packages_core_core_bo | {}): RootContext;
8968
8879
 
8969
8880
  export declare class ɵangular_packages_core_core_c implements Injector {
8970
8881
  get(token: any, notFoundValue?: any): any;
@@ -8991,7 +8902,7 @@ export declare class ɵangular_packages_core_core_d implements ReflectiveInjecto
8991
8902
  private _getByReflectiveDependency;
8992
8903
  private _getByKey;
8993
8904
  private _getObjByKeyId;
8994
- readonly displayName: string;
8905
+ get displayName(): string;
8995
8906
  toString(): string;
8996
8907
  }
8997
8908
 
@@ -9022,7 +8933,7 @@ export declare function ɵangular_packages_core_core_g(): string;
9022
8933
  * @param view The view to which the node belongs
9023
8934
  * @returns The ElementRef instance to use
9024
8935
  */
9025
- export declare function ɵangular_packages_core_core_h(ElementRefToken: typeof ElementRef, tNode: TNode, view: ɵangular_packages_core_core_bg): ElementRef;
8936
+ export declare function ɵangular_packages_core_core_h(ElementRefToken: typeof ElementRef, tNode: TNode, view: ɵangular_packages_core_core_bo): ElementRef;
9026
8937
 
9027
8938
  /**
9028
8939
  * Creates a TemplateRef and stores it on the injector.
@@ -9033,7 +8944,7 @@ export declare function ɵangular_packages_core_core_h(ElementRefToken: typeof E
9033
8944
  * @param hostView The view to which the node belongs
9034
8945
  * @returns The TemplateRef instance or null if we can't create a TemplateRef on a given node type
9035
8946
  */
9036
- export declare function ɵangular_packages_core_core_i<T>(TemplateRefToken: typeof TemplateRef, ElementRefToken: typeof ElementRef, hostTNode: TNode, hostView: ɵangular_packages_core_core_bg): TemplateRef<T> | null;
8947
+ export declare function ɵangular_packages_core_core_i<T>(TemplateRefToken: typeof TemplateRef, ElementRefToken: typeof ElementRef, hostTNode: TNode, hostView: ɵangular_packages_core_core_bo): TemplateRef<T> | null;
9037
8948
 
9038
8949
  export declare function ɵangular_packages_core_core_j(id: string): NgModuleFactory<any>;
9039
8950
 
@@ -9042,14 +8953,14 @@ export declare class ɵangular_packages_core_core_k {
9042
8953
  readonly parent: DebugElement | null;
9043
8954
  readonly nativeNode: any;
9044
8955
  private readonly _debugContext;
9045
- constructor(nativeNode: any, parent: DebugNode | null, _debugContext: ɵangular_packages_core_core_u);
9046
- readonly injector: Injector;
9047
- readonly componentInstance: any;
9048
- readonly context: any;
9049
- readonly references: {
8956
+ constructor(nativeNode: any, parent: DebugNode | null, _debugContext: ɵangular_packages_core_core_w);
8957
+ get injector(): Injector;
8958
+ get componentInstance(): any;
8959
+ get context(): any;
8960
+ get references(): {
9050
8961
  [key: string]: any;
9051
8962
  };
9052
- readonly providerTokens: any[];
8963
+ get providerTokens(): any[];
9053
8964
  }
9054
8965
 
9055
8966
  export declare class ɵangular_packages_core_core_l extends ɵangular_packages_core_core_k implements DebugElement {
@@ -9068,7 +8979,7 @@ export declare class ɵangular_packages_core_core_l extends ɵangular_packages_c
9068
8979
  };
9069
8980
  readonly childNodes: DebugNode[];
9070
8981
  readonly nativeElement: any;
9071
- constructor(nativeNode: any, parent: any, _debugContext: ɵangular_packages_core_core_u);
8982
+ constructor(nativeNode: any, parent: any, _debugContext: ɵangular_packages_core_core_w);
9072
8983
  addChild(child: DebugNode): void;
9073
8984
  removeChild(child: DebugNode): void;
9074
8985
  insertChildrenAfter(child: DebugNode, newChildren: DebugNode[]): void;
@@ -9076,33 +8987,35 @@ export declare class ɵangular_packages_core_core_l extends ɵangular_packages_c
9076
8987
  query(predicate: Predicate<DebugElement>): DebugElement;
9077
8988
  queryAll(predicate: Predicate<DebugElement>): DebugElement[];
9078
8989
  queryAllNodes(predicate: Predicate<DebugNode>): DebugNode[];
9079
- readonly children: DebugElement[];
8990
+ get children(): DebugElement[];
9080
8991
  triggerEventHandler(eventName: string, eventObj: any): void;
9081
8992
  }
9082
8993
 
9083
- export declare class ɵangular_packages_core_core_m implements IterableDifferFactory {
8994
+ export declare function ɵangular_packages_core_core_m(nativeNode: any): DebugNode | null;
8995
+
8996
+ export declare class ɵangular_packages_core_core_n implements IterableDifferFactory {
9084
8997
  constructor();
9085
8998
  supports(obj: Object | null | undefined): boolean;
9086
8999
  create<V>(trackByFn?: TrackByFunction<V>): DefaultIterableDiffer<V>;
9087
9000
  }
9088
9001
 
9089
- export declare class ɵangular_packages_core_core_n<K, V> implements KeyValueDifferFactory {
9002
+ export declare class ɵangular_packages_core_core_o<K, V> implements KeyValueDifferFactory {
9090
9003
  constructor();
9091
9004
  supports(obj: any): boolean;
9092
9005
  create<K, V>(): KeyValueDiffer<K, V>;
9093
9006
  }
9094
9007
 
9095
- export declare function ɵangular_packages_core_core_o(): IterableDiffers;
9008
+ export declare function ɵangular_packages_core_core_p(): IterableDiffers;
9096
9009
 
9097
- export declare function ɵangular_packages_core_core_p(): KeyValueDiffers;
9010
+ export declare function ɵangular_packages_core_core_q(): KeyValueDiffers;
9098
9011
 
9099
- export declare function ɵangular_packages_core_core_q(locale?: string): string;
9012
+ export declare function ɵangular_packages_core_core_r(locale?: string): string;
9100
9013
 
9101
9014
  /**
9102
9015
  * A built-in [dependency injection token](guide/glossary#di-token)
9103
9016
  * that is used to configure the root injector for bootstrapping.
9104
9017
  */
9105
- export declare const ɵangular_packages_core_core_r: StaticProvider[];
9018
+ export declare const ɵangular_packages_core_core_s: StaticProvider[];
9106
9019
 
9107
9020
  /**
9108
9021
  * Schedule work at next available slot.
@@ -9113,22 +9026,28 @@ export declare const ɵangular_packages_core_core_r: StaticProvider[];
9113
9026
  *
9114
9027
  * @param ngZone NgZone to use for scheduling.
9115
9028
  */
9116
- export declare function ɵangular_packages_core_core_s(ngZone: NgZone): (fn: () => void) => void;
9029
+ export declare function ɵangular_packages_core_core_t(ngZone: NgZone): (fn: () => void) => void;
9030
+
9031
+ /**
9032
+ * USD currency code that the application uses by default for CurrencyPipe when no
9033
+ * DEFAULT_CURRENCY_CODE is provided.
9034
+ */
9035
+ export declare const ɵangular_packages_core_core_u = "USD";
9117
9036
 
9118
- export declare function ɵangular_packages_core_core_t(checkIndex: number, flags: ɵNodeFlags, matchedQueriesDsl: [string | number, ɵQueryValueType][] | null, childCount: number, token: any, value: any, deps: ([ɵDepFlags, any] | any)[], bindings?: BindingDef[], outputs?: OutputDef[]): NodeDef;
9037
+ export declare function ɵangular_packages_core_core_v(checkIndex: number, flags: ɵNodeFlags, matchedQueriesDsl: [string | number, ɵQueryValueType][] | null, childCount: number, token: any, value: any, deps: ([ɵDepFlags, any] | any)[], bindings?: BindingDef[], outputs?: OutputDef[]): NodeDef;
9119
9038
 
9120
- export declare abstract class ɵangular_packages_core_core_u {
9121
- abstract readonly view: ViewData;
9122
- abstract readonly nodeIndex: number | null;
9123
- abstract readonly injector: Injector;
9124
- abstract readonly component: any;
9125
- abstract readonly providerTokens: any[];
9126
- abstract readonly references: {
9039
+ export declare abstract class ɵangular_packages_core_core_w {
9040
+ abstract get view(): ViewData;
9041
+ abstract get nodeIndex(): number | null;
9042
+ abstract get injector(): Injector;
9043
+ abstract get component(): any;
9044
+ abstract get providerTokens(): any[];
9045
+ abstract get references(): {
9127
9046
  [key: string]: any;
9128
9047
  };
9129
- abstract readonly context: any;
9130
- abstract readonly componentRenderElement: any;
9131
- abstract readonly renderNode: any;
9048
+ abstract get context(): any;
9049
+ abstract get componentRenderElement(): any;
9050
+ abstract get renderNode(): any;
9132
9051
  abstract logError(console: Console, ...values: any[]): void;
9133
9052
  }
9134
9053
 
@@ -9136,7 +9055,7 @@ export declare abstract class ɵangular_packages_core_core_u {
9136
9055
  * A change detection scheduler token for {@link RootContext}. This token is the default value used
9137
9056
  * for the default `RootContext` found in the {@link ROOT_CONTEXT} token.
9138
9057
  */
9139
- export declare const ɵangular_packages_core_core_v: InjectionToken<(fn: () => void) => void>;
9058
+ export declare const ɵangular_packages_core_core_x: InjectionToken<(fn: () => void) => void>;
9140
9059
 
9141
9060
  /**
9142
9061
  * Inject static attribute value into directive constructor.
@@ -9169,19 +9088,9 @@ export declare const ɵangular_packages_core_core_v: InjectionToken<(fn: () => v
9169
9088
  *
9170
9089
  * @publicApi
9171
9090
  */
9172
- export declare function ɵangular_packages_core_core_w(tNode: TNode, attrNameToInject: string): string | null;
9173
-
9174
- export declare const ɵangular_packages_core_core_x: InstructionState;
9175
-
9176
- /**
9177
- * Return the current LView.
9178
- *
9179
- * The return value can be `null` if the method is called outside of template. This can happen if
9180
- * directive is instantiated by module injector (rather than by node injector.)
9181
- */
9182
- export declare function ɵangular_packages_core_core_y(): ɵangular_packages_core_core_bg;
9091
+ export declare function ɵangular_packages_core_core_y(tNode: TNode, attrNameToInject: string): string | null;
9183
9092
 
9184
- export declare function ɵangular_packages_core_core_z(): TNode;
9093
+ export declare const ɵangular_packages_core_core_z: InstructionState;
9185
9094
 
9186
9095
  /**
9187
9096
  * Providers that will generate a random APP_ID_TOKEN.
@@ -9203,6 +9112,14 @@ export declare const enum ɵArgumentType {
9203
9112
  * items are not regular attributes and the processing should be adapted accordingly.
9204
9113
  */
9205
9114
  export declare const enum ɵAttributeMarker {
9115
+ /**
9116
+ * An implicit marker which indicates that the value in the array are of `attributeKey`,
9117
+ * `attributeValue` format.
9118
+ *
9119
+ * NOTE: This is implicit as it is the type when no marker is present in array. We indicate that
9120
+ * it should not be present at runtime by the negative number.
9121
+ */
9122
+ ImplicitAttributes = -1,
9206
9123
  /**
9207
9124
  * Marker indicates that the following 3 values in the attributes array are:
9208
9125
  * namespaceUri, attributeName, attributeValue
@@ -9669,17 +9586,11 @@ export declare const enum ɵDepFlags {
9669
9586
  /**
9670
9587
  * Synchronously perform change detection on a component (and possibly its sub-components).
9671
9588
  *
9672
- * This function triggers change detection in a synchronous way on a component. There should
9673
- * be very little reason to call this function directly since a preferred way to do change
9674
- * detection is to {@link markDirty} the component and wait for the scheduler to call this method
9675
- * at some future point in time. This is because a single user action often results in many
9676
- * components being invalidated and calling change detection on each component synchronously
9677
- * would be inefficient. It is better to wait until all components are marked as dirty and
9678
- * then perform single change detection across all of the components
9589
+ * This function triggers change detection in a synchronous way on a component.
9679
9590
  *
9680
9591
  * @param component The component which the change detection should be performed on.
9681
9592
  */
9682
- export declare function ɵdetectChanges<T>(component: T): void;
9593
+ export declare function ɵdetectChanges(component: {}): void;
9683
9594
 
9684
9595
 
9685
9596
  export declare function ɵdevModeEqual(a: any, b: any): boolean;
@@ -9741,9 +9652,47 @@ export declare interface ɵDirectiveDef<T> {
9741
9652
  /**
9742
9653
  * Refreshes host bindings on the associated directive.
9743
9654
  */
9744
- hostBindings: HostBindingsFunction<T> | null;
9655
+ readonly hostBindings: HostBindingsFunction<T> | null;
9656
+ /**
9657
+ * The number of bindings in this directive `hostBindings` (including pure fn bindings).
9658
+ *
9659
+ * Used to calculate the length of the component's LView array, so we
9660
+ * can pre-fill the array and set the host binding start index.
9661
+ */
9662
+ readonly hostVars: number;
9663
+ /**
9664
+ * Assign static attribute values to a host element.
9665
+ *
9666
+ * This property will assign static attribute values as well as class and style
9667
+ * values to a host element. Since attribute values can consist of different types of values, the
9668
+ * `hostAttrs` array must include the values in the following format:
9669
+ *
9670
+ * attrs = [
9671
+ * // static attributes (like `title`, `name`, `id`...)
9672
+ * attr1, value1, attr2, value,
9673
+ *
9674
+ * // a single namespace value (like `x:id`)
9675
+ * NAMESPACE_MARKER, namespaceUri1, name1, value1,
9676
+ *
9677
+ * // another single namespace value (like `x:name`)
9678
+ * NAMESPACE_MARKER, namespaceUri2, name2, value2,
9679
+ *
9680
+ * // a series of CSS classes that will be applied to the element (no spaces)
9681
+ * CLASSES_MARKER, class1, class2, class3,
9682
+ *
9683
+ * // a series of CSS styles (property + value) that will be applied to the element
9684
+ * STYLES_MARKER, prop1, value1, prop2, value2
9685
+ * ]
9686
+ *
9687
+ * All non-class and non-style attributes must be defined at the start of the list
9688
+ * first before all class and style values are set. When there is a change in value
9689
+ * type (like when classes and styles are introduced) a marker must be used to separate
9690
+ * the entries. The marker values themselves are set via entries found in the
9691
+ * [AttributeMarker] enum.
9692
+ */
9693
+ readonly hostAttrs: TAttributes | null;
9745
9694
  /** Token representing the directive. Used by DI. */
9746
- type: Type<T>;
9695
+ readonly type: Type<T>;
9747
9696
  /** Function that resolves providers and publishes them into the DI system. */
9748
9697
  providersResolver: (<U extends T>(def: ɵDirectiveDef<U>, processProvidersFn?: ProcessProvidersFunction) => void) | null;
9749
9698
  /** The selectors that will be used to match nodes to this directive. */
@@ -9756,15 +9705,15 @@ export declare interface ɵDirectiveDef<T> {
9756
9705
  * Factory function used to create a new directive instance. Will be null initially.
9757
9706
  * Populated when the factory is first requested by directive instantiation logic.
9758
9707
  */
9759
- factory: FactoryFn<T> | null;
9760
- onChanges: (() => void) | null;
9761
- onInit: (() => void) | null;
9762
- doCheck: (() => void) | null;
9763
- afterContentInit: (() => void) | null;
9764
- afterContentChecked: (() => void) | null;
9765
- afterViewInit: (() => void) | null;
9766
- afterViewChecked: (() => void) | null;
9767
- onDestroy: (() => void) | null;
9708
+ readonly factory: FactoryFn<T> | null;
9709
+ readonly onChanges: (() => void) | null;
9710
+ readonly onInit: (() => void) | null;
9711
+ readonly doCheck: (() => void) | null;
9712
+ readonly afterContentInit: (() => void) | null;
9713
+ readonly afterContentChecked: (() => void) | null;
9714
+ readonly afterViewInit: (() => void) | null;
9715
+ readonly afterViewChecked: (() => void) | null;
9716
+ readonly onDestroy: (() => void) | null;
9768
9717
  /**
9769
9718
  * The features applied to this directive
9770
9719
  */
@@ -9822,26 +9771,45 @@ export declare function ɵgetDebugNode__POST_R3__(nativeNode: Node): DebugNode__
9822
9771
 
9823
9772
  export declare function ɵgetDebugNode__POST_R3__(nativeNode: null): null;
9824
9773
 
9774
+ export declare const ɵgetDebugNodeR2: (nativeNode: any) => DebugNode | null;
9775
+
9825
9776
  /**
9826
- * Retrieves directives associated with a given DOM host element.
9777
+ * Retrieves directive instances associated with a given DOM element. Does not include
9778
+ * component instances.
9827
9779
  *
9828
- * @param target A DOM element, component or directive instance.
9780
+ * @usageNotes
9781
+ * Given the following DOM structure:
9782
+ * ```
9783
+ * <my-app>
9784
+ * <button my-button></button>
9785
+ * <my-comp></my-comp>
9786
+ * </my-app>
9787
+ * ```
9788
+ * Calling `getDirectives` on `<button>` will return an array with an instance of the `MyButton`
9789
+ * directive that is associated with the DOM element.
9790
+ *
9791
+ * Calling `getDirectives` on `<my-comp>` will return an empty array.
9792
+ *
9793
+ * @param element DOM element for which to get the directives.
9794
+ * @returns Array of directives associated with the element.
9829
9795
  *
9830
9796
  * @publicApi
9797
+ * @globalApi ng
9831
9798
  */
9832
- export declare function ɵgetDirectives(target: {}): Array<{}>;
9799
+ export declare function ɵgetDirectives(element: Element): {}[];
9833
9800
 
9834
9801
  /**
9835
- * Retrieve the host element of the component.
9836
- *
9837
- * Use this function to retrieve the host element of the component. The host
9838
- * element is the element which the component is associated with.
9802
+ * Retrieves the host element of a component or directive instance.
9803
+ * The host element is the DOM element that matched the selector of the directive.
9839
9804
  *
9840
- * @param directive Component or Directive for which the host element should be retrieved.
9805
+ * @param componentOrDirective Component or directive instance for which the host
9806
+ * element should be retrieved.
9807
+ * @returns Host element of the target.
9841
9808
  *
9842
9809
  * @publicApi
9810
+ * @globalApi ng
9843
9811
  */
9844
- export declare function ɵgetHostElement<T>(directive: T): Element;
9812
+ export declare function ɵgetHostElement(componentOrDirective: {}): Element;
9845
9813
 
9846
9814
  /**
9847
9815
  * Read the injectable def (`ɵprov`) for `type` in a way which is immune to accidentally reading
@@ -9872,6 +9840,17 @@ export declare function ɵgetInjectableDef<T>(type: any): ɵɵInjectableDef<T> |
9872
9840
  */
9873
9841
  export declare function ɵgetLContext(target: any): ɵLContext | null;
9874
9842
 
9843
+ /**
9844
+ * Retrieves the default currency code for the given locale.
9845
+ *
9846
+ * The default is defined as the first currency which is still in use.
9847
+ *
9848
+ * @param locale The code of the locale whose currency code we want.
9849
+ * @returns The code of the default currency for the given locale.
9850
+ *
9851
+ */
9852
+ export declare function ɵgetLocaleCurrencyCode(locale: string): string | null;
9853
+
9875
9854
  /**
9876
9855
  * Retrieves the plural function used by ICU expressions to determine the plural case to use
9877
9856
  * for a given locale.
@@ -9945,7 +9924,7 @@ export declare interface ɵLContext {
9945
9924
  /**
9946
9925
  * The component's parent view data.
9947
9926
  */
9948
- lView: ɵangular_packages_core_core_bg;
9927
+ lView: ɵangular_packages_core_core_bo;
9949
9928
  /**
9950
9929
  * The index instance of the node.
9951
9930
  */
@@ -10005,11 +9984,12 @@ export declare enum ɵLocaleDataIndex {
10005
9984
  DateTimeFormat = 12,
10006
9985
  NumberSymbols = 13,
10007
9986
  NumberFormats = 14,
10008
- CurrencySymbol = 15,
10009
- CurrencyName = 16,
10010
- Currencies = 17,
10011
- PluralCase = 18,
10012
- ExtraData = 19
9987
+ CurrencyCode = 15,
9988
+ CurrencySymbol = 16,
9989
+ CurrencyName = 17,
9990
+ Currencies = 18,
9991
+ PluralCase = 19,
9992
+ ExtraData = 20
10013
9993
  }
10014
9994
 
10015
9995
 
@@ -10025,22 +10005,15 @@ export declare function ɵmakeDecorator<T>(name: string, props?: (...args: any[]
10025
10005
  };
10026
10006
 
10027
10007
  /**
10028
- * Mark the component as dirty (needing change detection).
10008
+ * Marks the component as dirty (needing change detection). Marking a component dirty will
10009
+ * schedule a change detection on it at some point in the future.
10029
10010
  *
10030
- * Marking a component dirty will schedule a change detection on this
10031
- * component at some point in the future. Marking an already dirty
10032
- * component as dirty is a noop. Only one outstanding change detection
10033
- * can be scheduled per component tree. (Two components bootstrapped with
10034
- * separate `renderComponent` will have separate schedulers)
10035
- *
10036
- * When the root component is bootstrapped with `renderComponent`, a scheduler
10037
- * can be provided.
10011
+ * Marking an already dirty component as dirty won't do anything. Only one outstanding change
10012
+ * detection can be scheduled per component tree.
10038
10013
  *
10039
10014
  * @param component Component to mark as dirty.
10040
- *
10041
- * @publicApi
10042
10015
  */
10043
- export declare function ɵmarkDirty<T>(component: T): void;
10016
+ export declare function ɵmarkDirty(component: {}): void;
10044
10017
 
10045
10018
  export declare type ɵMethodFn = (obj: any, args: any[]) => any;
10046
10019
 
@@ -10139,7 +10112,7 @@ export declare interface ɵNgModuleType<T = any> extends Type<T> {
10139
10112
 
10140
10113
 
10141
10114
  export declare interface ɵNO_CHANGE {
10142
- brand: 'NO_CHANGE';
10115
+ __brand__: 'NO_CHANGE';
10143
10116
  }
10144
10117
 
10145
10118
  /** A special value which designates that a value has not changed. */
@@ -10421,11 +10394,11 @@ export declare class ɵRender3ComponentFactory<T> extends ComponentFactory<T> {
10421
10394
  componentType: Type<any>;
10422
10395
  ngContentSelectors: string[];
10423
10396
  isBoundToModule: boolean;
10424
- readonly inputs: {
10397
+ get inputs(): {
10425
10398
  propName: string;
10426
10399
  templateName: string;
10427
10400
  }[];
10428
- readonly outputs: {
10401
+ get outputs(): {
10429
10402
  propName: string;
10430
10403
  templateName: string;
10431
10404
  }[];
@@ -10454,8 +10427,8 @@ export declare class ɵRender3ComponentRef<T> extends ComponentRef<T> {
10454
10427
  hostView: ViewRef_2<T>;
10455
10428
  changeDetectorRef: ChangeDetectorRef;
10456
10429
  componentType: Type<T>;
10457
- constructor(componentType: Type<T>, instance: T, location: ElementRef, _rootLView: ɵangular_packages_core_core_bg, _tNode: ɵangular_packages_core_core_bb | TContainerNode | TElementContainerNode);
10458
- readonly injector: Injector;
10430
+ constructor(componentType: Type<T>, instance: T, location: ElementRef, _rootLView: ɵangular_packages_core_core_bo, _tNode: ɵangular_packages_core_core_be | TContainerNode | TElementContainerNode);
10431
+ get injector(): Injector;
10459
10432
  destroy(): void;
10460
10433
  onDestroy(callback: () => void): void;
10461
10434
  }
@@ -10469,7 +10442,7 @@ export declare class ɵRender3NgModuleRef<T> extends NgModuleRef<T> implements I
10469
10442
  destroyCbs: (() => void)[] | null;
10470
10443
  constructor(ngModuleType: Type<T>, _parent: Injector | null);
10471
10444
  get(token: any, notFoundValue?: any, injectFlags?: InjectFlags): any;
10472
- readonly componentFactoryResolver: ComponentFactoryResolver;
10445
+ get componentFactoryResolver(): ComponentFactoryResolver;
10473
10446
  destroy(): void;
10474
10447
  onDestroy(callback: () => void): void;
10475
10448
  }
@@ -10626,7 +10599,7 @@ export declare function ɵsetLocaleId(localeId: string): void;
10626
10599
  export declare type ɵSetterFn = (obj: any, value: any) => void;
10627
10600
 
10628
10601
  /** Store a value in the `data` at a given `index`. */
10629
- export declare function ɵstore<T>(index: number, value: T): void;
10602
+ export declare function ɵstore<T>(tView: TView, lView: ɵangular_packages_core_core_bo, index: number, value: T): void;
10630
10603
 
10631
10604
 
10632
10605
  export declare function ɵstringify(token: any): string;
@@ -10760,16 +10733,6 @@ export declare function ɵwhenRendered(component: any): Promise<null>;
10760
10733
  */
10761
10734
  export declare function ɵɵadvance(delta: number): void;
10762
10735
 
10763
-
10764
- /**
10765
- * Allocates the necessary amount of slots for host vars.
10766
- *
10767
- * @param count Amount of vars to be allocated
10768
- *
10769
- * @codeGenApi
10770
- */
10771
- export declare function ɵɵallocHostVars(count: number): void;
10772
-
10773
10736
  /**
10774
10737
  * Updates the value of or removes a bound attribute on an Element.
10775
10738
  *
@@ -11102,8 +11065,8 @@ export declare function ɵɵattributeInterpolateV(attrName: string, values: any[
11102
11065
  * @codeGenApi
11103
11066
  */
11104
11067
  export declare function ɵɵclassMap(classes: {
11105
- [className: string]: any;
11106
- } | ɵNO_CHANGE | string | null): void;
11068
+ [className: string]: boolean | undefined | null;
11069
+ } | Map<string, boolean | undefined | null> | Set<string> | string[] | string | undefined | null): void;
11107
11070
 
11108
11071
 
11109
11072
  /**
@@ -11392,7 +11355,7 @@ export declare function ɵɵclassMapInterpolateV(values: any[]): void;
11392
11355
  *
11393
11356
  * @codeGenApi
11394
11357
  */
11395
- export declare function ɵɵclassProp(className: string, value: boolean | null): typeof ɵɵclassProp;
11358
+ export declare function ɵɵclassProp(className: string, value: boolean | undefined | null): typeof ɵɵclassProp;
11396
11359
 
11397
11360
  /**
11398
11361
  * @codeGenApi
@@ -11597,6 +11560,44 @@ export declare function ɵɵdefineComponent<T>(componentDefinition: {
11597
11560
  * Function executed by the parent template to allow child directive to apply host bindings.
11598
11561
  */
11599
11562
  hostBindings?: HostBindingsFunction<T>;
11563
+ /**
11564
+ * The number of bindings in this directive `hostBindings` (including pure fn bindings).
11565
+ *
11566
+ * Used to calculate the length of the component's LView array, so we
11567
+ * can pre-fill the array and set the host binding start index.
11568
+ */
11569
+ hostVars?: number;
11570
+ /**
11571
+ * Assign static attribute values to a host element.
11572
+ *
11573
+ * This property will assign static attribute values as well as class and style
11574
+ * values to a host element. Since attribute values can consist of different types of values, the
11575
+ * `hostAttrs` array must include the values in the following format:
11576
+ *
11577
+ * attrs = [
11578
+ * // static attributes (like `title`, `name`, `id`...)
11579
+ * attr1, value1, attr2, value,
11580
+ *
11581
+ * // a single namespace value (like `x:id`)
11582
+ * NAMESPACE_MARKER, namespaceUri1, name1, value1,
11583
+ *
11584
+ * // another single namespace value (like `x:name`)
11585
+ * NAMESPACE_MARKER, namespaceUri2, name2, value2,
11586
+ *
11587
+ * // a series of CSS classes that will be applied to the element (no spaces)
11588
+ * CLASSES_MARKER, class1, class2, class3,
11589
+ *
11590
+ * // a series of CSS styles (property + value) that will be applied to the element
11591
+ * STYLES_MARKER, prop1, value1, prop2, value2
11592
+ * ]
11593
+ *
11594
+ * All non-class and non-style attributes must be defined at the start of the list
11595
+ * first before all class and style values are set. When there is a change in value
11596
+ * type (like when classes and styles are introduced) a marker must be used to separate
11597
+ * the entries. The marker values themselves are set via entries found in the
11598
+ * [AttributeMarker] enum.
11599
+ */
11600
+ hostAttrs?: TAttributes;
11600
11601
  /**
11601
11602
  * Function to create instances of content queries associated with a given directive.
11602
11603
  */
@@ -11725,7 +11726,7 @@ export declare const ɵɵdefineDirective: <T>(directiveDefinition: {
11725
11726
  */
11726
11727
  type: Type<T>;
11727
11728
  /** The selectors that will be used to match nodes to this directive. */
11728
- selectors?: (string | SelectorFlags)[][] | undefined;
11729
+ selectors?: ɵCssSelectorList | undefined;
11729
11730
  /**
11730
11731
  * A map of input names.
11731
11732
  *
@@ -11791,6 +11792,44 @@ export declare const ɵɵdefineDirective: <T>(directiveDefinition: {
11791
11792
  * Function executed by the parent template to allow child directive to apply host bindings.
11792
11793
  */
11793
11794
  hostBindings?: HostBindingsFunction<T> | undefined;
11795
+ /**
11796
+ * The number of bindings in this directive `hostBindings` (including pure fn bindings).
11797
+ *
11798
+ * Used to calculate the length of the component's LView array, so we
11799
+ * can pre-fill the array and set the host binding start index.
11800
+ */
11801
+ hostVars?: number | undefined;
11802
+ /**
11803
+ * Assign static attribute values to a host element.
11804
+ *
11805
+ * This property will assign static attribute values as well as class and style
11806
+ * values to a host element. Since attribute values can consist of different types of values, the
11807
+ * `hostAttrs` array must include the values in the following format:
11808
+ *
11809
+ * attrs = [
11810
+ * // static attributes (like `title`, `name`, `id`...)
11811
+ * attr1, value1, attr2, value,
11812
+ *
11813
+ * // a single namespace value (like `x:id`)
11814
+ * NAMESPACE_MARKER, namespaceUri1, name1, value1,
11815
+ *
11816
+ * // another single namespace value (like `x:name`)
11817
+ * NAMESPACE_MARKER, namespaceUri2, name2, value2,
11818
+ *
11819
+ * // a series of CSS classes that will be applied to the element (no spaces)
11820
+ * CLASSES_MARKER, class1, class2, class3,
11821
+ *
11822
+ * // a series of CSS styles (property + value) that will be applied to the element
11823
+ * STYLES_MARKER, prop1, value1, prop2, value2
11824
+ * ]
11825
+ *
11826
+ * All non-class and non-style attributes must be defined at the start of the list
11827
+ * first before all class and style values are set. When there is a change in value
11828
+ * type (like when classes and styles are introduced) a marker must be used to separate
11829
+ * the entries. The marker values themselves are set via entries found in the
11830
+ * [AttributeMarker] enum.
11831
+ */
11832
+ hostAttrs?: TAttributes | undefined;
11794
11833
  /**
11795
11834
  * Function to create instances of content queries associated with a given directive.
11796
11835
  */
@@ -12016,46 +12055,6 @@ export declare function ɵɵelementContainerStart(index: number, attrsIndex?: nu
12016
12055
  */
12017
12056
  export declare function ɵɵelementEnd(): void;
12018
12057
 
12019
- /**
12020
- * Assign static attribute values to a host element.
12021
- *
12022
- * This instruction will assign static attribute values as well as class and style
12023
- * values to an element within the host bindings function. Since attribute values
12024
- * can consist of different types of values, the `attrs` array must include the values in
12025
- * the following format:
12026
- *
12027
- * attrs = [
12028
- * // static attributes (like `title`, `name`, `id`...)
12029
- * attr1, value1, attr2, value,
12030
- *
12031
- * // a single namespace value (like `x:id`)
12032
- * NAMESPACE_MARKER, namespaceUri1, name1, value1,
12033
- *
12034
- * // another single namespace value (like `x:name`)
12035
- * NAMESPACE_MARKER, namespaceUri2, name2, value2,
12036
- *
12037
- * // a series of CSS classes that will be applied to the element (no spaces)
12038
- * CLASSES_MARKER, class1, class2, class3,
12039
- *
12040
- * // a series of CSS styles (property + value) that will be applied to the element
12041
- * STYLES_MARKER, prop1, value1, prop2, value2
12042
- * ]
12043
- *
12044
- * All non-class and non-style attributes must be defined at the start of the list
12045
- * first before all class and style values are set. When there is a change in value
12046
- * type (like when classes and styles are introduced) a marker must be used to separate
12047
- * the entries. The marker values themselves are set via entries found in the
12048
- * [AttributeMarker] enum.
12049
- *
12050
- * NOTE: This instruction is meant to used from `hostBindings` function only.
12051
- *
12052
- * @param directive A directive instance the styling is associated with.
12053
- * @param attrs An array of static values (attributes, classes and styles) with the correct marker
12054
- * values.
12055
- *
12056
- * @codeGenApi
12057
- */
12058
- export declare function ɵɵelementHostAttrs(attrs: TAttributes): void;
12059
12058
 
12060
12059
  /**
12061
12060
  * Create DOM element. The instruction must later be followed by `elementEnd()` call.
@@ -13039,7 +13038,6 @@ export declare function ɵɵpropertyInterpolateV(propName: string, values: any[]
13039
13038
  */
13040
13039
  export declare function ɵɵProvidersFeature<T>(providers: Provider[], viewProviders?: Provider[]): (definition: ɵDirectiveDef<T>) => void;
13041
13040
 
13042
-
13043
13041
  /**
13044
13042
  * Bindings for pure functions are stored after regular bindings.
13045
13043
  *
@@ -13472,7 +13470,7 @@ export declare function ɵɵstaticViewQuery<T>(predicate: Type<any> | string[],
13472
13470
  */
13473
13471
  export declare function ɵɵstyleMap(styles: {
13474
13472
  [styleName: string]: any;
13475
- } | ɵNO_CHANGE | null): void;
13473
+ } | Map<string, string | number | null | undefined> | string | undefined | null): void;
13476
13474
 
13477
13475
  /**
13478
13476
  * Update a style binding on an element with the provided value.
@@ -13495,7 +13493,8 @@ export declare function ɵɵstyleMap(styles: {
13495
13493
  *
13496
13494
  * @codeGenApi
13497
13495
  */
13498
- export declare function ɵɵstyleProp(prop: string, value: string | number | ɵSafeValue | null, suffix?: string | null): typeof ɵɵstyleProp;
13496
+ export declare function ɵɵstyleProp(prop: string, value: string | number | ɵSafeValue | undefined | null, suffix?: string | null): typeof ɵɵstyleProp;
13497
+
13499
13498
 
13500
13499
  /**
13501
13500
  *
@@ -13811,15 +13810,6 @@ export declare function ɵɵstylePropInterpolate8(prop: string, prefix: string,
13811
13810
  */
13812
13811
  export declare function ɵɵstylePropInterpolateV(prop: string, values: any[], valueSuffix?: string | null): typeof ɵɵstylePropInterpolateV;
13813
13812
 
13814
- /**
13815
- * --------
13816
- *
13817
- * This file contains the core logic for how styling instructions are processed in Angular.
13818
- *
13819
- * To learn more about the algorithm see `TStylingContext`.
13820
- *
13821
- * --------
13822
- */
13823
13813
  /**
13824
13814
  * Sets the current style sanitizer function which will then be used
13825
13815
  * within all follow-up prop and map-based style binding instructions
@@ -13865,7 +13855,7 @@ export declare function ɵɵtemplate(index: number, templateFn: ComponentTemplat
13865
13855
  *
13866
13856
  * @codeGenApi
13867
13857
  */
13868
- export declare function ɵɵtemplateRefExtractor(tNode: TNode, currentView: ɵangular_packages_core_core_bg): TemplateRef<unknown> | null;
13858
+ export declare function ɵɵtemplateRefExtractor(tNode: TNode, currentView: ɵangular_packages_core_core_bo): TemplateRef<unknown> | null;
13869
13859
 
13870
13860
  /**
13871
13861
  * Create static text node