@angular/compiler 20.0.0-next.2 → 20.0.0-next.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v20.0.0-next.2
2
+ * @license Angular v20.0.0-next.4
3
3
  * (c) 2010-2025 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -2896,6 +2896,11 @@ class Identifiers {
2896
2896
  name: 'ɵɵdeferEnableTimerScheduling',
2897
2897
  moduleName: CORE,
2898
2898
  };
2899
+ static conditionalCreate = { name: 'ɵɵconditionalCreate', moduleName: CORE };
2900
+ static conditionalBranchCreate = {
2901
+ name: 'ɵɵconditionalBranchCreate',
2902
+ moduleName: CORE,
2903
+ };
2899
2904
  static conditional = { name: 'ɵɵconditional', moduleName: CORE };
2900
2905
  static repeater = { name: 'ɵɵrepeater', moduleName: CORE };
2901
2906
  static repeaterCreate = { name: 'ɵɵrepeaterCreate', moduleName: CORE };
@@ -5476,6 +5481,28 @@ let Icu$1 = class Icu {
5476
5481
  return visitor.visitIcu(this);
5477
5482
  }
5478
5483
  };
5484
+ /**
5485
+ * AST node that represents the host element of a directive.
5486
+ * This node is used only for type checking purposes and cannot be produced from a user's template.
5487
+ */
5488
+ class HostElement {
5489
+ tagNames;
5490
+ bindings;
5491
+ listeners;
5492
+ sourceSpan;
5493
+ constructor(tagNames, bindings, listeners, sourceSpan) {
5494
+ this.tagNames = tagNames;
5495
+ this.bindings = bindings;
5496
+ this.listeners = listeners;
5497
+ this.sourceSpan = sourceSpan;
5498
+ if (tagNames.length === 0) {
5499
+ throw new Error('HostElement must have at least one tag name.');
5500
+ }
5501
+ }
5502
+ visit() {
5503
+ throw new Error(`HostElement cannot be visited`);
5504
+ }
5505
+ }
5479
5506
  let RecursiveVisitor$1 = class RecursiveVisitor {
5480
5507
  visitElement(element) {
5481
5508
  visitAll$1(this, element.attributes);
@@ -8707,167 +8734,175 @@ var OpKind;
8707
8734
  * node.
8708
8735
  */
8709
8736
  OpKind[OpKind["DisableBindings"] = 10] = "DisableBindings";
8737
+ /**
8738
+ * Create a conditional creation instruction op.
8739
+ */
8740
+ OpKind[OpKind["ConditionalCreate"] = 11] = "ConditionalCreate";
8741
+ /**
8742
+ * Create a conditional branch creation instruction op.
8743
+ */
8744
+ OpKind[OpKind["ConditionalBranchCreate"] = 12] = "ConditionalBranchCreate";
8710
8745
  /**
8711
8746
  * An op to conditionally render a template.
8712
8747
  */
8713
- OpKind[OpKind["Conditional"] = 11] = "Conditional";
8748
+ OpKind[OpKind["Conditional"] = 13] = "Conditional";
8714
8749
  /**
8715
8750
  * An operation to re-enable binding, after it was previously disabled.
8716
8751
  */
8717
- OpKind[OpKind["EnableBindings"] = 12] = "EnableBindings";
8752
+ OpKind[OpKind["EnableBindings"] = 14] = "EnableBindings";
8718
8753
  /**
8719
8754
  * An operation to render a text node.
8720
8755
  */
8721
- OpKind[OpKind["Text"] = 13] = "Text";
8756
+ OpKind[OpKind["Text"] = 15] = "Text";
8722
8757
  /**
8723
8758
  * An operation declaring an event listener for an element.
8724
8759
  */
8725
- OpKind[OpKind["Listener"] = 14] = "Listener";
8760
+ OpKind[OpKind["Listener"] = 16] = "Listener";
8726
8761
  /**
8727
8762
  * An operation to interpolate text into a text node.
8728
8763
  */
8729
- OpKind[OpKind["InterpolateText"] = 15] = "InterpolateText";
8764
+ OpKind[OpKind["InterpolateText"] = 17] = "InterpolateText";
8730
8765
  /**
8731
8766
  * An intermediate binding op, that has not yet been processed into an individual property,
8732
8767
  * attribute, style, etc.
8733
8768
  */
8734
- OpKind[OpKind["Binding"] = 16] = "Binding";
8769
+ OpKind[OpKind["Binding"] = 18] = "Binding";
8735
8770
  /**
8736
8771
  * An operation to bind an expression to a property of an element.
8737
8772
  */
8738
- OpKind[OpKind["Property"] = 17] = "Property";
8773
+ OpKind[OpKind["Property"] = 19] = "Property";
8739
8774
  /**
8740
8775
  * An operation to bind an expression to a style property of an element.
8741
8776
  */
8742
- OpKind[OpKind["StyleProp"] = 18] = "StyleProp";
8777
+ OpKind[OpKind["StyleProp"] = 20] = "StyleProp";
8743
8778
  /**
8744
8779
  * An operation to bind an expression to a class property of an element.
8745
8780
  */
8746
- OpKind[OpKind["ClassProp"] = 19] = "ClassProp";
8781
+ OpKind[OpKind["ClassProp"] = 21] = "ClassProp";
8747
8782
  /**
8748
8783
  * An operation to bind an expression to the styles of an element.
8749
8784
  */
8750
- OpKind[OpKind["StyleMap"] = 20] = "StyleMap";
8785
+ OpKind[OpKind["StyleMap"] = 22] = "StyleMap";
8751
8786
  /**
8752
8787
  * An operation to bind an expression to the classes of an element.
8753
8788
  */
8754
- OpKind[OpKind["ClassMap"] = 21] = "ClassMap";
8789
+ OpKind[OpKind["ClassMap"] = 23] = "ClassMap";
8755
8790
  /**
8756
8791
  * An operation to advance the runtime's implicit slot context during the update phase of a view.
8757
8792
  */
8758
- OpKind[OpKind["Advance"] = 22] = "Advance";
8793
+ OpKind[OpKind["Advance"] = 24] = "Advance";
8759
8794
  /**
8760
8795
  * An operation to instantiate a pipe.
8761
8796
  */
8762
- OpKind[OpKind["Pipe"] = 23] = "Pipe";
8797
+ OpKind[OpKind["Pipe"] = 25] = "Pipe";
8763
8798
  /**
8764
8799
  * An operation to associate an attribute with an element.
8765
8800
  */
8766
- OpKind[OpKind["Attribute"] = 24] = "Attribute";
8801
+ OpKind[OpKind["Attribute"] = 26] = "Attribute";
8767
8802
  /**
8768
8803
  * An attribute that has been extracted for inclusion in the consts array.
8769
8804
  */
8770
- OpKind[OpKind["ExtractedAttribute"] = 25] = "ExtractedAttribute";
8805
+ OpKind[OpKind["ExtractedAttribute"] = 27] = "ExtractedAttribute";
8771
8806
  /**
8772
8807
  * An operation that configures a `@defer` block.
8773
8808
  */
8774
- OpKind[OpKind["Defer"] = 26] = "Defer";
8809
+ OpKind[OpKind["Defer"] = 28] = "Defer";
8775
8810
  /**
8776
8811
  * An operation that controls when a `@defer` loads.
8777
8812
  */
8778
- OpKind[OpKind["DeferOn"] = 27] = "DeferOn";
8813
+ OpKind[OpKind["DeferOn"] = 29] = "DeferOn";
8779
8814
  /**
8780
8815
  * An operation that controls when a `@defer` loads, using a custom expression as the condition.
8781
8816
  */
8782
- OpKind[OpKind["DeferWhen"] = 28] = "DeferWhen";
8817
+ OpKind[OpKind["DeferWhen"] = 30] = "DeferWhen";
8783
8818
  /**
8784
8819
  * An i18n message that has been extracted for inclusion in the consts array.
8785
8820
  */
8786
- OpKind[OpKind["I18nMessage"] = 29] = "I18nMessage";
8821
+ OpKind[OpKind["I18nMessage"] = 31] = "I18nMessage";
8787
8822
  /**
8788
8823
  * A host binding property.
8789
8824
  */
8790
- OpKind[OpKind["HostProperty"] = 30] = "HostProperty";
8825
+ OpKind[OpKind["HostProperty"] = 32] = "HostProperty";
8791
8826
  /**
8792
8827
  * A namespace change, which causes the subsequent elements to be processed as either HTML or SVG.
8793
8828
  */
8794
- OpKind[OpKind["Namespace"] = 31] = "Namespace";
8829
+ OpKind[OpKind["Namespace"] = 33] = "Namespace";
8795
8830
  /**
8796
8831
  * Configure a content projeciton definition for the view.
8797
8832
  */
8798
- OpKind[OpKind["ProjectionDef"] = 32] = "ProjectionDef";
8833
+ OpKind[OpKind["ProjectionDef"] = 34] = "ProjectionDef";
8799
8834
  /**
8800
8835
  * Create a content projection slot.
8801
8836
  */
8802
- OpKind[OpKind["Projection"] = 33] = "Projection";
8837
+ OpKind[OpKind["Projection"] = 35] = "Projection";
8803
8838
  /**
8804
8839
  * Create a repeater creation instruction op.
8805
8840
  */
8806
- OpKind[OpKind["RepeaterCreate"] = 34] = "RepeaterCreate";
8841
+ OpKind[OpKind["RepeaterCreate"] = 36] = "RepeaterCreate";
8807
8842
  /**
8808
8843
  * An update up for a repeater.
8809
8844
  */
8810
- OpKind[OpKind["Repeater"] = 35] = "Repeater";
8845
+ OpKind[OpKind["Repeater"] = 37] = "Repeater";
8811
8846
  /**
8812
8847
  * An operation to bind an expression to the property side of a two-way binding.
8813
8848
  */
8814
- OpKind[OpKind["TwoWayProperty"] = 36] = "TwoWayProperty";
8849
+ OpKind[OpKind["TwoWayProperty"] = 38] = "TwoWayProperty";
8815
8850
  /**
8816
8851
  * An operation declaring the event side of a two-way binding.
8817
8852
  */
8818
- OpKind[OpKind["TwoWayListener"] = 37] = "TwoWayListener";
8853
+ OpKind[OpKind["TwoWayListener"] = 39] = "TwoWayListener";
8819
8854
  /**
8820
8855
  * A creation-time operation that initializes the slot for a `@let` declaration.
8821
8856
  */
8822
- OpKind[OpKind["DeclareLet"] = 38] = "DeclareLet";
8857
+ OpKind[OpKind["DeclareLet"] = 40] = "DeclareLet";
8823
8858
  /**
8824
8859
  * An update-time operation that stores the current value of a `@let` declaration.
8825
8860
  */
8826
- OpKind[OpKind["StoreLet"] = 39] = "StoreLet";
8861
+ OpKind[OpKind["StoreLet"] = 41] = "StoreLet";
8827
8862
  /**
8828
8863
  * The start of an i18n block.
8829
8864
  */
8830
- OpKind[OpKind["I18nStart"] = 40] = "I18nStart";
8865
+ OpKind[OpKind["I18nStart"] = 42] = "I18nStart";
8831
8866
  /**
8832
8867
  * A self-closing i18n on a single element.
8833
8868
  */
8834
- OpKind[OpKind["I18n"] = 41] = "I18n";
8869
+ OpKind[OpKind["I18n"] = 43] = "I18n";
8835
8870
  /**
8836
8871
  * The end of an i18n block.
8837
8872
  */
8838
- OpKind[OpKind["I18nEnd"] = 42] = "I18nEnd";
8873
+ OpKind[OpKind["I18nEnd"] = 44] = "I18nEnd";
8839
8874
  /**
8840
8875
  * An expression in an i18n message.
8841
8876
  */
8842
- OpKind[OpKind["I18nExpression"] = 43] = "I18nExpression";
8877
+ OpKind[OpKind["I18nExpression"] = 45] = "I18nExpression";
8843
8878
  /**
8844
8879
  * An instruction that applies a set of i18n expressions.
8845
8880
  */
8846
- OpKind[OpKind["I18nApply"] = 44] = "I18nApply";
8881
+ OpKind[OpKind["I18nApply"] = 46] = "I18nApply";
8847
8882
  /**
8848
8883
  * An instruction to create an ICU expression.
8849
8884
  */
8850
- OpKind[OpKind["IcuStart"] = 45] = "IcuStart";
8885
+ OpKind[OpKind["IcuStart"] = 47] = "IcuStart";
8851
8886
  /**
8852
8887
  * An instruction to update an ICU expression.
8853
8888
  */
8854
- OpKind[OpKind["IcuEnd"] = 46] = "IcuEnd";
8889
+ OpKind[OpKind["IcuEnd"] = 48] = "IcuEnd";
8855
8890
  /**
8856
8891
  * An instruction representing a placeholder in an ICU expression.
8857
8892
  */
8858
- OpKind[OpKind["IcuPlaceholder"] = 47] = "IcuPlaceholder";
8893
+ OpKind[OpKind["IcuPlaceholder"] = 49] = "IcuPlaceholder";
8859
8894
  /**
8860
8895
  * An i18n context containing information needed to generate an i18n message.
8861
8896
  */
8862
- OpKind[OpKind["I18nContext"] = 48] = "I18nContext";
8897
+ OpKind[OpKind["I18nContext"] = 50] = "I18nContext";
8863
8898
  /**
8864
8899
  * A creation op that corresponds to i18n attributes on an element.
8865
8900
  */
8866
- OpKind[OpKind["I18nAttributes"] = 49] = "I18nAttributes";
8901
+ OpKind[OpKind["I18nAttributes"] = 51] = "I18nAttributes";
8867
8902
  /**
8868
8903
  * Creation op that attaches the location at which an element was defined in a template to it.
8869
8904
  */
8870
- OpKind[OpKind["SourceLocation"] = 50] = "SourceLocation";
8905
+ OpKind[OpKind["SourceLocation"] = 52] = "SourceLocation";
8871
8906
  })(OpKind || (OpKind = {}));
8872
8907
  /**
8873
8908
  * Distinguishes different kinds of IR expressions.
@@ -10417,6 +10452,8 @@ function transformExpressionsInOp(op, transform, flags) {
10417
10452
  case OpKind.IcuPlaceholder:
10418
10453
  case OpKind.DeclareLet:
10419
10454
  case OpKind.SourceLocation:
10455
+ case OpKind.ConditionalCreate:
10456
+ case OpKind.ConditionalBranchCreate:
10420
10457
  // These operations contain no expressions.
10421
10458
  break;
10422
10459
  default:
@@ -10832,6 +10869,8 @@ const elementContainerOpKinds = new Set([
10832
10869
  OpKind.ContainerStart,
10833
10870
  OpKind.Template,
10834
10871
  OpKind.RepeaterCreate,
10872
+ OpKind.ConditionalCreate,
10873
+ OpKind.ConditionalBranchCreate,
10835
10874
  ]);
10836
10875
  /**
10837
10876
  * Checks whether the given operation represents the creation of an element or container.
@@ -10883,6 +10922,48 @@ function createTemplateOp(xref, templateKind, tag, functionNameSuffix, namespace
10883
10922
  ...NEW_OP,
10884
10923
  };
10885
10924
  }
10925
+ function createConditionalCreateOp(xref, templateKind, tag, functionNameSuffix, namespace, i18nPlaceholder, startSourceSpan, wholeSourceSpan) {
10926
+ return {
10927
+ kind: OpKind.ConditionalCreate,
10928
+ xref,
10929
+ templateKind,
10930
+ attributes: null,
10931
+ tag,
10932
+ handle: new SlotHandle(),
10933
+ functionNameSuffix,
10934
+ decls: null,
10935
+ vars: null,
10936
+ localRefs: [],
10937
+ nonBindable: false,
10938
+ namespace,
10939
+ i18nPlaceholder,
10940
+ startSourceSpan,
10941
+ wholeSourceSpan,
10942
+ ...TRAIT_CONSUMES_SLOT,
10943
+ ...NEW_OP,
10944
+ };
10945
+ }
10946
+ function createConditionalBranchCreateOp(xref, templateKind, tag, functionNameSuffix, namespace, i18nPlaceholder, startSourceSpan, wholeSourceSpan) {
10947
+ return {
10948
+ kind: OpKind.ConditionalBranchCreate,
10949
+ xref,
10950
+ templateKind,
10951
+ attributes: null,
10952
+ tag,
10953
+ handle: new SlotHandle(),
10954
+ functionNameSuffix,
10955
+ decls: null,
10956
+ vars: null,
10957
+ localRefs: [],
10958
+ nonBindable: false,
10959
+ namespace,
10960
+ i18nPlaceholder,
10961
+ startSourceSpan,
10962
+ wholeSourceSpan,
10963
+ ...TRAIT_CONSUMES_SLOT,
10964
+ ...NEW_OP,
10965
+ };
10966
+ }
10886
10967
  function createRepeaterCreateOp(primaryView, emptyView, tag, track, varNames, emptyTag, i18nPlaceholder, emptyI18nPlaceholder, startSourceSpan, wholeSourceSpan) {
10887
10968
  return {
10888
10969
  kind: OpKind.RepeaterCreate,
@@ -11830,36 +11911,38 @@ function specializeBindings(job) {
11830
11911
  }
11831
11912
  }
11832
11913
 
11833
- const CHAINABLE = new Set([
11834
- Identifiers.attribute,
11835
- Identifiers.classProp,
11836
- Identifiers.element,
11837
- Identifiers.elementContainer,
11838
- Identifiers.elementContainerEnd,
11839
- Identifiers.elementContainerStart,
11840
- Identifiers.elementEnd,
11841
- Identifiers.elementStart,
11842
- Identifiers.hostProperty,
11843
- Identifiers.i18nExp,
11844
- Identifiers.listener,
11845
- Identifiers.listener,
11846
- Identifiers.property,
11847
- Identifiers.styleProp,
11848
- Identifiers.stylePropInterpolate1,
11849
- Identifiers.stylePropInterpolate2,
11850
- Identifiers.stylePropInterpolate3,
11851
- Identifiers.stylePropInterpolate4,
11852
- Identifiers.stylePropInterpolate5,
11853
- Identifiers.stylePropInterpolate6,
11854
- Identifiers.stylePropInterpolate7,
11855
- Identifiers.stylePropInterpolate8,
11856
- Identifiers.stylePropInterpolateV,
11857
- Identifiers.syntheticHostListener,
11858
- Identifiers.syntheticHostProperty,
11859
- Identifiers.templateCreate,
11860
- Identifiers.twoWayProperty,
11861
- Identifiers.twoWayListener,
11862
- Identifiers.declareLet,
11914
+ const CHAIN_COMPATIBILITY = new Map([
11915
+ [Identifiers.attribute, Identifiers.attribute],
11916
+ [Identifiers.classProp, Identifiers.classProp],
11917
+ [Identifiers.element, Identifiers.element],
11918
+ [Identifiers.elementContainer, Identifiers.elementContainer],
11919
+ [Identifiers.elementContainerEnd, Identifiers.elementContainerEnd],
11920
+ [Identifiers.elementContainerStart, Identifiers.elementContainerStart],
11921
+ [Identifiers.elementEnd, Identifiers.elementEnd],
11922
+ [Identifiers.elementStart, Identifiers.elementStart],
11923
+ [Identifiers.hostProperty, Identifiers.hostProperty],
11924
+ [Identifiers.i18nExp, Identifiers.i18nExp],
11925
+ [Identifiers.listener, Identifiers.listener],
11926
+ [Identifiers.listener, Identifiers.listener],
11927
+ [Identifiers.property, Identifiers.property],
11928
+ [Identifiers.styleProp, Identifiers.styleProp],
11929
+ [Identifiers.stylePropInterpolate1, Identifiers.stylePropInterpolate1],
11930
+ [Identifiers.stylePropInterpolate2, Identifiers.stylePropInterpolate2],
11931
+ [Identifiers.stylePropInterpolate3, Identifiers.stylePropInterpolate3],
11932
+ [Identifiers.stylePropInterpolate4, Identifiers.stylePropInterpolate4],
11933
+ [Identifiers.stylePropInterpolate5, Identifiers.stylePropInterpolate5],
11934
+ [Identifiers.stylePropInterpolate6, Identifiers.stylePropInterpolate6],
11935
+ [Identifiers.stylePropInterpolate7, Identifiers.stylePropInterpolate7],
11936
+ [Identifiers.stylePropInterpolate8, Identifiers.stylePropInterpolate8],
11937
+ [Identifiers.stylePropInterpolateV, Identifiers.stylePropInterpolateV],
11938
+ [Identifiers.syntheticHostListener, Identifiers.syntheticHostListener],
11939
+ [Identifiers.syntheticHostProperty, Identifiers.syntheticHostProperty],
11940
+ [Identifiers.templateCreate, Identifiers.templateCreate],
11941
+ [Identifiers.twoWayProperty, Identifiers.twoWayProperty],
11942
+ [Identifiers.twoWayListener, Identifiers.twoWayListener],
11943
+ [Identifiers.declareLet, Identifiers.declareLet],
11944
+ [Identifiers.conditionalCreate, Identifiers.conditionalBranchCreate],
11945
+ [Identifiers.conditionalBranchCreate, Identifiers.conditionalBranchCreate],
11863
11946
  ]);
11864
11947
  /**
11865
11948
  * Chaining results in repeated call expressions, causing a deep AST of receiver expressions. To prevent running out of
@@ -11905,14 +11988,16 @@ function chainOperationsInList(opList) {
11905
11988
  continue;
11906
11989
  }
11907
11990
  const instruction = op.statement.expr.fn.value;
11908
- if (!CHAINABLE.has(instruction)) {
11991
+ if (!CHAIN_COMPATIBILITY.has(instruction)) {
11909
11992
  // This instruction isn't chainable.
11910
11993
  chain = null;
11911
11994
  continue;
11912
11995
  }
11913
11996
  // This instruction can be chained. It can either be added on to the previous chain (if
11914
11997
  // compatible) or it can be the start of a new chain.
11915
- if (chain !== null && chain.instruction === instruction && chain.length < MAX_CHAIN_LENGTH) {
11998
+ if (chain !== null &&
11999
+ CHAIN_COMPATIBILITY.get(chain.instruction) === instruction &&
12000
+ chain.length < MAX_CHAIN_LENGTH) {
11916
12001
  // This instruction can be added onto the previous chain.
11917
12002
  const expression = chain.expression.callFn(op.statement.expr.args, op.statement.expr.sourceSpan, op.statement.expr.pure);
11918
12003
  chain.expression = expression;
@@ -13131,6 +13216,8 @@ function recursivelyProcessView(view, parentScope) {
13131
13216
  const scope = getScopeForView(view, parentScope);
13132
13217
  for (const op of view.create) {
13133
13218
  switch (op.kind) {
13219
+ case OpKind.ConditionalCreate:
13220
+ case OpKind.ConditionalBranchCreate:
13134
13221
  case OpKind.Template:
13135
13222
  // Descend into child embedded views.
13136
13223
  recursivelyProcessView(view.job.views.get(op.xref), scope);
@@ -13188,6 +13275,8 @@ function getScopeForView(view, parent) {
13188
13275
  for (const op of view.create) {
13189
13276
  switch (op.kind) {
13190
13277
  case OpKind.ElementStart:
13278
+ case OpKind.ConditionalCreate:
13279
+ case OpKind.ConditionalBranchCreate:
13191
13280
  case OpKind.Template:
13192
13281
  if (!Array.isArray(op.localRefs)) {
13193
13282
  throw new Error(`AssertionError: expected localRefs to be an array`);
@@ -21718,6 +21807,8 @@ function liftLocalRefs(job) {
21718
21807
  for (const op of unit.create) {
21719
21808
  switch (op.kind) {
21720
21809
  case OpKind.ElementStart:
21810
+ case OpKind.ConditionalCreate:
21811
+ case OpKind.ConditionalBranchCreate:
21721
21812
  case OpKind.Template:
21722
21813
  if (!Array.isArray(op.localRefs)) {
21723
21814
  throw new Error(`AssertionError: expected localRefs to be an array still`);
@@ -21860,7 +21951,9 @@ function parseExtractedStyles(job) {
21860
21951
  isStringLiteral(op.expression)) {
21861
21952
  const target = elements.get(op.target);
21862
21953
  if (target !== undefined &&
21863
- target.kind === OpKind.Template &&
21954
+ (target.kind === OpKind.Template ||
21955
+ target.kind === OpKind.ConditionalCreate ||
21956
+ target.kind === OpKind.ConditionalBranchCreate) &&
21864
21957
  target.templateKind === TemplateKind.Structural) {
21865
21958
  // TemplateDefinitionBuilder will not apply class and style bindings to structural
21866
21959
  // directives; instead, it will leave them as attributes.
@@ -21975,6 +22068,8 @@ function addNamesToView(unit, baseName, state, compatibility) {
21975
22068
  addNamesToView(fallbackView, `${baseName}_ProjectionFallback_${op.handle.slot}`, state, compatibility);
21976
22069
  }
21977
22070
  break;
22071
+ case OpKind.ConditionalCreate:
22072
+ case OpKind.ConditionalBranchCreate:
21978
22073
  case OpKind.Template:
21979
22074
  if (!(unit instanceof ViewCompilationUnit)) {
21980
22075
  throw new Error(`AssertionError: must be compiling a component`);
@@ -22460,6 +22555,8 @@ function propagateI18nBlocksToTemplates(unit, subTemplateIndex) {
22460
22555
  }
22461
22556
  i18nBlock = null;
22462
22557
  break;
22558
+ case OpKind.ConditionalCreate:
22559
+ case OpKind.ConditionalBranchCreate:
22463
22560
  case OpKind.Template:
22464
22561
  subTemplateIndex = propagateI18nBlocksForView(unit.job.views.get(op.xref), i18nBlock, op.i18nPlaceholder, subTemplateIndex);
22465
22562
  break;
@@ -22665,7 +22762,6 @@ function enableBindings() {
22665
22762
  function listener(name, handlerFn, eventTargetResolver, syntheticHost, sourceSpan) {
22666
22763
  const args = [literal(name), handlerFn];
22667
22764
  if (eventTargetResolver !== null) {
22668
- args.push(literal(false)); // `useCapture` flag, defaults to `false`
22669
22765
  args.push(importExpr(eventTargetResolver));
22670
22766
  }
22671
22767
  return call(syntheticHost ? Identifiers.syntheticHostListener : Identifiers.listener, args, sourceSpan);
@@ -22825,6 +22921,42 @@ function i18nStart(slot, constIndex, subTemplateIndex, sourceSpan) {
22825
22921
  }
22826
22922
  return call(Identifiers.i18nStart, args, sourceSpan);
22827
22923
  }
22924
+ function conditionalCreate(slot, templateFnRef, decls, vars, tag, constIndex, localRefs, sourceSpan) {
22925
+ const args = [
22926
+ literal(slot),
22927
+ templateFnRef,
22928
+ literal(decls),
22929
+ literal(vars),
22930
+ literal(tag),
22931
+ literal(constIndex),
22932
+ ];
22933
+ if (localRefs !== null) {
22934
+ args.push(literal(localRefs));
22935
+ args.push(importExpr(Identifiers.templateRefExtractor));
22936
+ }
22937
+ while (args[args.length - 1].isEquivalent(NULL_EXPR)) {
22938
+ args.pop();
22939
+ }
22940
+ return call(Identifiers.conditionalCreate, args, sourceSpan);
22941
+ }
22942
+ function conditionalBranchCreate(slot, templateFnRef, decls, vars, tag, constIndex, localRefs, sourceSpan) {
22943
+ const args = [
22944
+ literal(slot),
22945
+ templateFnRef,
22946
+ literal(decls),
22947
+ literal(vars),
22948
+ literal(tag),
22949
+ literal(constIndex),
22950
+ ];
22951
+ if (localRefs !== null) {
22952
+ args.push(literal(localRefs));
22953
+ args.push(importExpr(Identifiers.templateRefExtractor));
22954
+ }
22955
+ while (args[args.length - 1].isEquivalent(NULL_EXPR)) {
22956
+ args.pop();
22957
+ }
22958
+ return call(Identifiers.conditionalBranchCreate, args, sourceSpan);
22959
+ }
22828
22960
  function repeaterCreate(slot, viewFnName, decls, vars, tag, constIndex, trackByFn, trackByUsesComponentInstance, emptyViewFnName, emptyDecls, emptyVars, emptyTag, emptyConstIndex, sourceSpan) {
22829
22961
  const args = [
22830
22962
  literal(slot),
@@ -23394,6 +23526,26 @@ function reifyCreateOperations(unit, ops) {
23394
23526
  }
23395
23527
  OpList.replace(op, projection(op.handle.slot, op.projectionSlotIndex, op.attributes, fallbackViewFnName, fallbackDecls, fallbackVars, op.sourceSpan));
23396
23528
  break;
23529
+ case OpKind.ConditionalCreate:
23530
+ if (!(unit instanceof ViewCompilationUnit)) {
23531
+ throw new Error(`AssertionError: must be compiling a component`);
23532
+ }
23533
+ if (Array.isArray(op.localRefs)) {
23534
+ throw new Error(`AssertionError: local refs array should have been extracted into a constant`);
23535
+ }
23536
+ const conditionalCreateChildView = unit.job.views.get(op.xref);
23537
+ OpList.replace(op, conditionalCreate(op.handle.slot, variable(conditionalCreateChildView.fnName), conditionalCreateChildView.decls, conditionalCreateChildView.vars, op.tag, op.attributes, op.localRefs, op.startSourceSpan));
23538
+ break;
23539
+ case OpKind.ConditionalBranchCreate:
23540
+ if (!(unit instanceof ViewCompilationUnit)) {
23541
+ throw new Error(`AssertionError: must be compiling a component`);
23542
+ }
23543
+ if (Array.isArray(op.localRefs)) {
23544
+ throw new Error(`AssertionError: local refs array should have been extracted into a constant`);
23545
+ }
23546
+ const conditionalBranchCreateChildView = unit.job.views.get(op.xref);
23547
+ OpList.replace(op, conditionalBranchCreate(op.handle.slot, variable(conditionalBranchCreateChildView.fnName), conditionalBranchCreateChildView.decls, conditionalBranchCreateChildView.vars, op.tag, op.attributes, op.localRefs, op.startSourceSpan));
23548
+ break;
23397
23549
  case OpKind.RepeaterCreate:
23398
23550
  if (op.handle.slot === null) {
23399
23551
  throw new Error('No slot was assigned for repeater instruction');
@@ -23951,6 +24103,8 @@ function resolvePlaceholdersForView(job, unit, i18nContexts, elements, pendingSt
23951
24103
  pendingStructuralDirective = undefined;
23952
24104
  }
23953
24105
  break;
24106
+ case OpKind.ConditionalCreate:
24107
+ case OpKind.ConditionalBranchCreate:
23954
24108
  case OpKind.Template:
23955
24109
  const view = job.views.get(op.xref);
23956
24110
  if (op.i18nPlaceholder === undefined) {
@@ -24514,7 +24668,10 @@ function allocateSlots(job) {
24514
24668
  // propagate the number of slots used for each view into the operation which declares it.
24515
24669
  for (const unit of job.units) {
24516
24670
  for (const op of unit.ops()) {
24517
- if (op.kind === OpKind.Template || op.kind === OpKind.RepeaterCreate) {
24671
+ if (op.kind === OpKind.Template ||
24672
+ op.kind === OpKind.ConditionalCreate ||
24673
+ op.kind === OpKind.ConditionalBranchCreate ||
24674
+ op.kind === OpKind.RepeaterCreate) {
24518
24675
  // Record the number of slots used by the view this `ir.TemplateOp` declares in the
24519
24676
  // operation itself, so it can be emitted later.
24520
24677
  const childView = job.views.get(op.xref);
@@ -24575,6 +24732,8 @@ function optimizeStoreLet(job) {
24575
24732
  * typescript AST, the parentheses node is removed, and then the remaining AST is printed, it
24576
24733
  * incorrectly prints `a ? b : c ?? d`. This is different from how it handles the same situation
24577
24734
  * with `||` and `&&` where it prints the parentheses even if they are not present in the AST.
24735
+ * Note: We may be able to remove this case if Typescript resolves the following issue:
24736
+ * https://github.com/microsoft/TypeScript/issues/61369
24578
24737
  */
24579
24738
  function stripNonrequiredParentheses(job) {
24580
24739
  // Check which parentheses are required.
@@ -24949,7 +25108,10 @@ function countVariables(job) {
24949
25108
  // an embedded view).
24950
25109
  for (const unit of job.units) {
24951
25110
  for (const op of unit.create) {
24952
- if (op.kind !== OpKind.Template && op.kind !== OpKind.RepeaterCreate) {
25111
+ if (op.kind !== OpKind.Template &&
25112
+ op.kind !== OpKind.RepeaterCreate &&
25113
+ op.kind !== OpKind.ConditionalCreate &&
25114
+ op.kind !== OpKind.ConditionalBranchCreate) {
24953
25115
  continue;
24954
25116
  }
24955
25117
  const childView = job.views.get(op.xref);
@@ -25933,13 +26095,14 @@ function ingestIfBlock(unit, ifBlock) {
25933
26095
  }
25934
26096
  ifCaseI18nMeta = ifCase.i18n;
25935
26097
  }
25936
- const templateOp = createTemplateOp(cView.xref, TemplateKind.Block, tagName, 'Conditional', Namespace.HTML, ifCaseI18nMeta, ifCase.startSourceSpan, ifCase.sourceSpan);
25937
- unit.create.push(templateOp);
26098
+ const createOp = i === 0 ? createConditionalCreateOp : createConditionalBranchCreateOp;
26099
+ const conditionalCreateOp = createOp(cView.xref, TemplateKind.Block, tagName, 'Conditional', Namespace.HTML, ifCaseI18nMeta, ifCase.startSourceSpan, ifCase.sourceSpan);
26100
+ unit.create.push(conditionalCreateOp);
25938
26101
  if (firstXref === null) {
25939
26102
  firstXref = cView.xref;
25940
26103
  }
25941
26104
  const caseExpr = ifCase.expression ? convertAst(ifCase.expression, unit.job, null) : null;
25942
- const conditionalCaseExpr = new ConditionalCaseExpr(caseExpr, templateOp.xref, templateOp.handle, ifCase.expressionAlias);
26105
+ const conditionalCaseExpr = new ConditionalCaseExpr(caseExpr, conditionalCreateOp.xref, conditionalCreateOp.handle, ifCase.expressionAlias);
25943
26106
  conditions.push(conditionalCaseExpr);
25944
26107
  ingestNodes(cView, ifCase.children);
25945
26108
  }
@@ -25955,7 +26118,8 @@ function ingestSwitchBlock(unit, switchBlock) {
25955
26118
  }
25956
26119
  let firstXref = null;
25957
26120
  let conditions = [];
25958
- for (const switchCase of switchBlock.cases) {
26121
+ for (let i = 0; i < switchBlock.cases.length; i++) {
26122
+ const switchCase = switchBlock.cases[i];
25959
26123
  const cView = unit.job.allocateView(unit.xref);
25960
26124
  const tagName = ingestControlFlowInsertionPoint(unit, cView.xref, switchCase);
25961
26125
  let switchCaseI18nMeta = undefined;
@@ -25965,15 +26129,16 @@ function ingestSwitchBlock(unit, switchBlock) {
25965
26129
  }
25966
26130
  switchCaseI18nMeta = switchCase.i18n;
25967
26131
  }
25968
- const templateOp = createTemplateOp(cView.xref, TemplateKind.Block, tagName, 'Case', Namespace.HTML, switchCaseI18nMeta, switchCase.startSourceSpan, switchCase.sourceSpan);
25969
- unit.create.push(templateOp);
26132
+ const createOp = i === 0 ? createConditionalCreateOp : createConditionalBranchCreateOp;
26133
+ const conditionalCreateOp = createOp(cView.xref, TemplateKind.Block, tagName, 'Case', Namespace.HTML, switchCaseI18nMeta, switchCase.startSourceSpan, switchCase.sourceSpan);
26134
+ unit.create.push(conditionalCreateOp);
25970
26135
  if (firstXref === null) {
25971
26136
  firstXref = cView.xref;
25972
26137
  }
25973
26138
  const caseExpr = switchCase.expression
25974
26139
  ? convertAst(switchCase.expression, unit.job, switchBlock.startSourceSpan)
25975
26140
  : null;
25976
- const conditionalCaseExpr = new ConditionalCaseExpr(caseExpr, templateOp.xref, templateOp.handle);
26141
+ const conditionalCaseExpr = new ConditionalCaseExpr(caseExpr, conditionalCreateOp.xref, conditionalCreateOp.handle);
25977
26142
  conditions.push(conditionalCaseExpr);
25978
26143
  ingestNodes(cView, switchCase.children);
25979
26144
  }
@@ -29661,7 +29826,7 @@ class R3TargetBinder {
29661
29826
  * metadata about the types referenced in the template.
29662
29827
  */
29663
29828
  bind(target) {
29664
- if (!target.template) {
29829
+ if (!target.template && !target.host) {
29665
29830
  throw new Error('Empty bound targets are not supported');
29666
29831
  }
29667
29832
  const directives = new Map();
@@ -29691,6 +29856,11 @@ class R3TargetBinder {
29691
29856
  // template. This extracts all the metadata that doesn't depend on directive matching.
29692
29857
  TemplateBinder.applyWithScope(target.template, scope, expressions, symbols, nestingLevel, usedPipes, eagerPipes, deferBlocks);
29693
29858
  }
29859
+ // Bind the host element in a separate scope. Note that it only uses the
29860
+ // `TemplateBinder` since directives don't apply inside a host context.
29861
+ if (target.host) {
29862
+ TemplateBinder.applyWithScope(target.host, Scope.apply(target.host), expressions, symbols, nestingLevel, usedPipes, eagerPipes, deferBlocks);
29863
+ }
29694
29864
  return new R3BoundTarget(target, directives, eagerDirectives, bindings, references, expressions, symbols, nestingLevel, scopedNodeEntities, usedPipes, eagerPipes, deferBlocks);
29695
29865
  }
29696
29866
  }
@@ -29766,7 +29936,7 @@ class Scope {
29766
29936
  nodeOrNodes instanceof Content) {
29767
29937
  nodeOrNodes.children.forEach((node) => node.visit(this));
29768
29938
  }
29769
- else {
29939
+ else if (!(nodeOrNodes instanceof HostElement)) {
29770
29940
  // No overarching `Template` instance, so process the nodes directly.
29771
29941
  nodeOrNodes.forEach((node) => node.visit(this));
29772
29942
  }
@@ -30095,7 +30265,7 @@ class TemplateBinder extends RecursiveAstVisitor {
30095
30265
  /**
30096
30266
  * Process a template and extract metadata about expressions and symbols within.
30097
30267
  *
30098
- * @param nodes the nodes of the template to process
30268
+ * @param nodeOrNodes the nodes of the template to process
30099
30269
  * @param scope the `Scope` of the template being processed.
30100
30270
  * @returns three maps which contain metadata about the template: `expressions` which interprets
30101
30271
  * special `AST` nodes in expressions as pointing to references or variables declared within the
@@ -30104,11 +30274,11 @@ class TemplateBinder extends RecursiveAstVisitor {
30104
30274
  * nesting level (how many levels deep within the template structure the `Template` is), starting
30105
30275
  * at 1.
30106
30276
  */
30107
- static applyWithScope(nodes, scope, expressions, symbols, nestingLevel, usedPipes, eagerPipes, deferBlocks) {
30108
- const template = nodes instanceof Template ? nodes : null;
30277
+ static applyWithScope(nodeOrNodes, scope, expressions, symbols, nestingLevel, usedPipes, eagerPipes, deferBlocks) {
30278
+ const template = nodeOrNodes instanceof Template ? nodeOrNodes : null;
30109
30279
  // The top-level template has nesting level 0.
30110
30280
  const binder = new TemplateBinder(expressions, symbols, usedPipes, eagerPipes, deferBlocks, nestingLevel, scope, template, 0);
30111
- binder.ingest(nodes);
30281
+ binder.ingest(nodeOrNodes);
30112
30282
  }
30113
30283
  ingest(nodeOrNodes) {
30114
30284
  if (nodeOrNodes instanceof Template) {
@@ -30150,6 +30320,10 @@ class TemplateBinder extends RecursiveAstVisitor {
30150
30320
  nodeOrNodes.children.forEach((node) => node.visit(this));
30151
30321
  this.nestingLevel.set(nodeOrNodes, this.level);
30152
30322
  }
30323
+ else if (nodeOrNodes instanceof HostElement) {
30324
+ // Host elements are always at the top level.
30325
+ this.nestingLevel.set(nodeOrNodes, 0);
30326
+ }
30153
30327
  else {
30154
30328
  // Visit each node from the top-level template.
30155
30329
  nodeOrNodes.forEach(this.visitNode);
@@ -32881,7 +33055,7 @@ const MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION = '18.0.0';
32881
33055
  function compileDeclareClassMetadata(metadata) {
32882
33056
  const definitionMap = new DefinitionMap();
32883
33057
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$5));
32884
- definitionMap.set('version', literal('20.0.0-next.2'));
33058
+ definitionMap.set('version', literal('20.0.0-next.4'));
32885
33059
  definitionMap.set('ngImport', importExpr(Identifiers.core));
32886
33060
  definitionMap.set('type', metadata.type);
32887
33061
  definitionMap.set('decorators', metadata.decorators);
@@ -32899,7 +33073,7 @@ function compileComponentDeclareClassMetadata(metadata, dependencies) {
32899
33073
  callbackReturnDefinitionMap.set('ctorParameters', metadata.ctorParameters ?? literal(null));
32900
33074
  callbackReturnDefinitionMap.set('propDecorators', metadata.propDecorators ?? literal(null));
32901
33075
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION));
32902
- definitionMap.set('version', literal('20.0.0-next.2'));
33076
+ definitionMap.set('version', literal('20.0.0-next.4'));
32903
33077
  definitionMap.set('ngImport', importExpr(Identifiers.core));
32904
33078
  definitionMap.set('type', metadata.type);
32905
33079
  definitionMap.set('resolveDeferredDeps', compileComponentMetadataAsyncResolver(dependencies));
@@ -32994,7 +33168,7 @@ function createDirectiveDefinitionMap(meta) {
32994
33168
  const definitionMap = new DefinitionMap();
32995
33169
  const minVersion = getMinimumVersionForPartialOutput(meta);
32996
33170
  definitionMap.set('minVersion', literal(minVersion));
32997
- definitionMap.set('version', literal('20.0.0-next.2'));
33171
+ definitionMap.set('version', literal('20.0.0-next.4'));
32998
33172
  // e.g. `type: MyDirective`
32999
33173
  definitionMap.set('type', meta.type.value);
33000
33174
  if (meta.isStandalone !== undefined) {
@@ -33410,7 +33584,7 @@ const MINIMUM_PARTIAL_LINKER_VERSION$4 = '12.0.0';
33410
33584
  function compileDeclareFactoryFunction(meta) {
33411
33585
  const definitionMap = new DefinitionMap();
33412
33586
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$4));
33413
- definitionMap.set('version', literal('20.0.0-next.2'));
33587
+ definitionMap.set('version', literal('20.0.0-next.4'));
33414
33588
  definitionMap.set('ngImport', importExpr(Identifiers.core));
33415
33589
  definitionMap.set('type', meta.type.value);
33416
33590
  definitionMap.set('deps', compileDependencies(meta.deps));
@@ -33445,7 +33619,7 @@ function compileDeclareInjectableFromMetadata(meta) {
33445
33619
  function createInjectableDefinitionMap(meta) {
33446
33620
  const definitionMap = new DefinitionMap();
33447
33621
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$3));
33448
- definitionMap.set('version', literal('20.0.0-next.2'));
33622
+ definitionMap.set('version', literal('20.0.0-next.4'));
33449
33623
  definitionMap.set('ngImport', importExpr(Identifiers.core));
33450
33624
  definitionMap.set('type', meta.type.value);
33451
33625
  // Only generate providedIn property if it has a non-null value
@@ -33496,7 +33670,7 @@ function compileDeclareInjectorFromMetadata(meta) {
33496
33670
  function createInjectorDefinitionMap(meta) {
33497
33671
  const definitionMap = new DefinitionMap();
33498
33672
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$2));
33499
- definitionMap.set('version', literal('20.0.0-next.2'));
33673
+ definitionMap.set('version', literal('20.0.0-next.4'));
33500
33674
  definitionMap.set('ngImport', importExpr(Identifiers.core));
33501
33675
  definitionMap.set('type', meta.type.value);
33502
33676
  definitionMap.set('providers', meta.providers);
@@ -33529,7 +33703,7 @@ function createNgModuleDefinitionMap(meta) {
33529
33703
  throw new Error('Invalid path! Local compilation mode should not get into the partial compilation path');
33530
33704
  }
33531
33705
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$1));
33532
- definitionMap.set('version', literal('20.0.0-next.2'));
33706
+ definitionMap.set('version', literal('20.0.0-next.4'));
33533
33707
  definitionMap.set('ngImport', importExpr(Identifiers.core));
33534
33708
  definitionMap.set('type', meta.type.value);
33535
33709
  // We only generate the keys in the metadata if the arrays contain values.
@@ -33580,7 +33754,7 @@ function compileDeclarePipeFromMetadata(meta) {
33580
33754
  function createPipeDefinitionMap(meta) {
33581
33755
  const definitionMap = new DefinitionMap();
33582
33756
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION));
33583
- definitionMap.set('version', literal('20.0.0-next.2'));
33757
+ definitionMap.set('version', literal('20.0.0-next.4'));
33584
33758
  definitionMap.set('ngImport', importExpr(Identifiers.core));
33585
33759
  // e.g. `type: MyPipe`
33586
33760
  definitionMap.set('type', meta.type.value);
@@ -33738,7 +33912,7 @@ function compileHmrUpdateCallback(definitions, constantStatements, meta) {
33738
33912
  * @description
33739
33913
  * Entry point for all public APIs of the compiler package.
33740
33914
  */
33741
- const VERSION = new Version('20.0.0-next.2');
33915
+ const VERSION = new Version('20.0.0-next.4');
33742
33916
 
33743
33917
  //////////////////////////////////////
33744
33918
  // THIS FILE HAS GLOBAL SIDE EFFECT //
@@ -33764,5 +33938,5 @@ const VERSION = new Version('20.0.0-next.2');
33764
33938
  // the late binding of the Compiler to the @angular/core for jit compilation.
33765
33939
  publishFacade(_global);
33766
33940
 
33767
- export { AST, ASTWithName, ASTWithSource, AbsoluteSourceSpan, ArrayType, ArrowFunctionExpr, Attribute, Binary, BinaryOperator, BinaryOperatorExpr, BindingPipe, BindingType, Block, BlockParameter, BoundElementProperty, BuiltinType, BuiltinTypeName, CUSTOM_ELEMENTS_SCHEMA, Call, Chain, ChangeDetectionStrategy, CommaExpr, Comment, CompilerConfig, Conditional, ConditionalExpr, ConstantPool, CssSelector, DEFAULT_INTERPOLATION_CONFIG, DYNAMIC_TYPE, DeclareFunctionStmt, DeclareVarStmt, DomElementSchemaRegistry, DynamicImportExpr, EOF, Element, ElementSchemaRegistry, EmitterVisitorContext, EmptyExpr$1 as EmptyExpr, Expansion, ExpansionCase, Expression, ExpressionBinding, ExpressionStatement, ExpressionType, ExternalExpr, ExternalReference, FactoryTarget$1 as FactoryTarget, FunctionExpr, HtmlParser, HtmlTagDefinition, I18NHtmlParser, IfStmt, ImplicitReceiver, InstantiateExpr, Interpolation$1 as Interpolation, InterpolationConfig, InvokeFunctionExpr, JSDocComment, JitEvaluator, KeyedRead, KeyedWrite, LeadingComment, LetDeclaration, Lexer, LiteralArray, LiteralArrayExpr, LiteralExpr, LiteralMap, LiteralMapExpr, LiteralPrimitive, LocalizedString, MapType, MessageBundle, NONE_TYPE, NO_ERRORS_SCHEMA, NodeWithI18n, NonNullAssert, NotExpr, ParenthesizedExpr, ParenthesizedExpression, ParseError, ParseErrorLevel, ParseLocation, ParseSourceFile, ParseSourceSpan, ParseSpan, ParseTreeResult, ParsedEvent, ParsedEventType, ParsedProperty, ParsedPropertyType, ParsedVariable, Parser, ParserError, PrefixNot, PropertyRead, PropertyWrite, R3BoundTarget, Identifiers as R3Identifiers, R3NgModuleMetadataKind, R3SelectorScopeMode, R3TargetBinder, R3TemplateDependencyKind, ReadKeyExpr, ReadPropExpr, ReadVarExpr, RecursiveAstVisitor, RecursiveVisitor, ResourceLoader, ReturnStatement, STRING_TYPE, SafeCall, SafeKeyedRead, SafePropertyRead, SelectorContext, SelectorListContext, SelectorMatcher, Serializer, SplitInterpolation, Statement, StmtModifier, StringToken, StringTokenKind, TagContentType, TaggedTemplateLiteral, TaggedTemplateLiteralExpr, TemplateBindingParseResult, TemplateLiteral, TemplateLiteralElement, TemplateLiteralElementExpr, TemplateLiteralExpr, Text, ThisReceiver, BlockNode as TmplAstBlockNode, BoundAttribute as TmplAstBoundAttribute, BoundDeferredTrigger as TmplAstBoundDeferredTrigger, BoundEvent as TmplAstBoundEvent, BoundText as TmplAstBoundText, Content as TmplAstContent, DeferredBlock as TmplAstDeferredBlock, DeferredBlockError as TmplAstDeferredBlockError, DeferredBlockLoading as TmplAstDeferredBlockLoading, DeferredBlockPlaceholder as TmplAstDeferredBlockPlaceholder, DeferredTrigger as TmplAstDeferredTrigger, Element$1 as TmplAstElement, ForLoopBlock as TmplAstForLoopBlock, ForLoopBlockEmpty as TmplAstForLoopBlockEmpty, HoverDeferredTrigger as TmplAstHoverDeferredTrigger, Icu$1 as TmplAstIcu, IdleDeferredTrigger as TmplAstIdleDeferredTrigger, IfBlock as TmplAstIfBlock, IfBlockBranch as TmplAstIfBlockBranch, ImmediateDeferredTrigger as TmplAstImmediateDeferredTrigger, InteractionDeferredTrigger as TmplAstInteractionDeferredTrigger, LetDeclaration$1 as TmplAstLetDeclaration, NeverDeferredTrigger as TmplAstNeverDeferredTrigger, RecursiveVisitor$1 as TmplAstRecursiveVisitor, Reference as TmplAstReference, SwitchBlock as TmplAstSwitchBlock, SwitchBlockCase as TmplAstSwitchBlockCase, Template as TmplAstTemplate, Text$3 as TmplAstText, TextAttribute as TmplAstTextAttribute, TimerDeferredTrigger as TmplAstTimerDeferredTrigger, UnknownBlock as TmplAstUnknownBlock, Variable as TmplAstVariable, ViewportDeferredTrigger as TmplAstViewportDeferredTrigger, Token, TokenType, TransplantedType, TreeError, Type, TypeModifier, TypeofExpr, TypeofExpression, Unary, UnaryOperator, UnaryOperatorExpr, VERSION, VariableBinding, Version, ViewEncapsulation, VoidExpr, VoidExpression, WrappedNodeExpr, WriteKeyExpr, WritePropExpr, WriteVarExpr, Xliff, Xliff2, Xmb, XmlParser, Xtb, compileClassDebugInfo, compileClassMetadata, compileComponentClassMetadata, compileComponentDeclareClassMetadata, compileComponentFromMetadata, compileDeclareClassMetadata, compileDeclareComponentFromMetadata, compileDeclareDirectiveFromMetadata, compileDeclareFactoryFunction, compileDeclareInjectableFromMetadata, compileDeclareInjectorFromMetadata, compileDeclareNgModuleFromMetadata, compileDeclarePipeFromMetadata, compileDeferResolverFunction, compileDirectiveFromMetadata, compileFactoryFunction, compileHmrInitializer, compileHmrUpdateCallback, compileInjectable, compileInjector, compileNgModule, compileOpaqueAsyncClassMetadata, compilePipeFromMetadata, computeMsgId, core, createCssSelectorFromNode, createInjectableType, createMayBeForwardRefExpression, devOnlyGuardedExpression, emitDistinctChangesOnlyDefaultValue, encapsulateStyle, findMatchingDirectivesAndPipes, getHtmlTagDefinition, getNsPrefix, getSafePropertyAccessString, identifierName, isNgContainer, isNgContent, isNgTemplate, jsDocComment, leadingComment, literal, literalMap, makeBindingParser, mergeNsAndName, output_ast as outputAst, parseHostBindings, parseTemplate, preserveWhitespacesDefault, publishFacade, r3JitTypeSourceSpan, sanitizeIdentifier, splitNsName, visitAll$1 as tmplAstVisitAll, verifyHostBindings, visitAll };
33941
+ export { AST, ASTWithName, ASTWithSource, AbsoluteSourceSpan, ArrayType, ArrowFunctionExpr, Attribute, Binary, BinaryOperator, BinaryOperatorExpr, BindingPipe, BindingType, Block, BlockParameter, BoundElementProperty, BuiltinType, BuiltinTypeName, CUSTOM_ELEMENTS_SCHEMA, Call, Chain, ChangeDetectionStrategy, CommaExpr, Comment, CompilerConfig, Conditional, ConditionalExpr, ConstantPool, CssSelector, DEFAULT_INTERPOLATION_CONFIG, DYNAMIC_TYPE, DeclareFunctionStmt, DeclareVarStmt, DomElementSchemaRegistry, DynamicImportExpr, EOF, Element, ElementSchemaRegistry, EmitterVisitorContext, EmptyExpr$1 as EmptyExpr, Expansion, ExpansionCase, Expression, ExpressionBinding, ExpressionStatement, ExpressionType, ExternalExpr, ExternalReference, FactoryTarget$1 as FactoryTarget, FunctionExpr, HtmlParser, HtmlTagDefinition, I18NHtmlParser, IfStmt, ImplicitReceiver, InstantiateExpr, Interpolation$1 as Interpolation, InterpolationConfig, InvokeFunctionExpr, JSDocComment, JitEvaluator, KeyedRead, KeyedWrite, LeadingComment, LetDeclaration, Lexer, LiteralArray, LiteralArrayExpr, LiteralExpr, LiteralMap, LiteralMapExpr, LiteralPrimitive, LocalizedString, MapType, MessageBundle, NONE_TYPE, NO_ERRORS_SCHEMA, NodeWithI18n, NonNullAssert, NotExpr, ParenthesizedExpr, ParenthesizedExpression, ParseError, ParseErrorLevel, ParseLocation, ParseSourceFile, ParseSourceSpan, ParseSpan, ParseTreeResult, ParsedEvent, ParsedEventType, ParsedProperty, ParsedPropertyType, ParsedVariable, Parser, ParserError, PrefixNot, PropertyRead, PropertyWrite, Identifiers as R3Identifiers, R3NgModuleMetadataKind, R3SelectorScopeMode, R3TargetBinder, R3TemplateDependencyKind, ReadKeyExpr, ReadPropExpr, ReadVarExpr, RecursiveAstVisitor, RecursiveVisitor, ResourceLoader, ReturnStatement, STRING_TYPE, SafeCall, SafeKeyedRead, SafePropertyRead, SelectorContext, SelectorListContext, SelectorMatcher, Serializer, SplitInterpolation, Statement, StmtModifier, StringToken, StringTokenKind, TagContentType, TaggedTemplateLiteral, TaggedTemplateLiteralExpr, TemplateBindingParseResult, TemplateLiteral, TemplateLiteralElement, TemplateLiteralElementExpr, TemplateLiteralExpr, Text, ThisReceiver, BlockNode as TmplAstBlockNode, BoundAttribute as TmplAstBoundAttribute, BoundDeferredTrigger as TmplAstBoundDeferredTrigger, BoundEvent as TmplAstBoundEvent, BoundText as TmplAstBoundText, Content as TmplAstContent, DeferredBlock as TmplAstDeferredBlock, DeferredBlockError as TmplAstDeferredBlockError, DeferredBlockLoading as TmplAstDeferredBlockLoading, DeferredBlockPlaceholder as TmplAstDeferredBlockPlaceholder, DeferredTrigger as TmplAstDeferredTrigger, Element$1 as TmplAstElement, ForLoopBlock as TmplAstForLoopBlock, ForLoopBlockEmpty as TmplAstForLoopBlockEmpty, HostElement as TmplAstHostElement, HoverDeferredTrigger as TmplAstHoverDeferredTrigger, Icu$1 as TmplAstIcu, IdleDeferredTrigger as TmplAstIdleDeferredTrigger, IfBlock as TmplAstIfBlock, IfBlockBranch as TmplAstIfBlockBranch, ImmediateDeferredTrigger as TmplAstImmediateDeferredTrigger, InteractionDeferredTrigger as TmplAstInteractionDeferredTrigger, LetDeclaration$1 as TmplAstLetDeclaration, NeverDeferredTrigger as TmplAstNeverDeferredTrigger, RecursiveVisitor$1 as TmplAstRecursiveVisitor, Reference as TmplAstReference, SwitchBlock as TmplAstSwitchBlock, SwitchBlockCase as TmplAstSwitchBlockCase, Template as TmplAstTemplate, Text$3 as TmplAstText, TextAttribute as TmplAstTextAttribute, TimerDeferredTrigger as TmplAstTimerDeferredTrigger, UnknownBlock as TmplAstUnknownBlock, Variable as TmplAstVariable, ViewportDeferredTrigger as TmplAstViewportDeferredTrigger, Token, TokenType, TransplantedType, TreeError, Type, TypeModifier, TypeofExpr, TypeofExpression, Unary, UnaryOperator, UnaryOperatorExpr, VERSION, VariableBinding, Version, ViewEncapsulation, VoidExpr, VoidExpression, WrappedNodeExpr, WriteKeyExpr, WritePropExpr, WriteVarExpr, Xliff, Xliff2, Xmb, XmlParser, Xtb, compileClassDebugInfo, compileClassMetadata, compileComponentClassMetadata, compileComponentDeclareClassMetadata, compileComponentFromMetadata, compileDeclareClassMetadata, compileDeclareComponentFromMetadata, compileDeclareDirectiveFromMetadata, compileDeclareFactoryFunction, compileDeclareInjectableFromMetadata, compileDeclareInjectorFromMetadata, compileDeclareNgModuleFromMetadata, compileDeclarePipeFromMetadata, compileDeferResolverFunction, compileDirectiveFromMetadata, compileFactoryFunction, compileHmrInitializer, compileHmrUpdateCallback, compileInjectable, compileInjector, compileNgModule, compileOpaqueAsyncClassMetadata, compilePipeFromMetadata, computeMsgId, core, createCssSelectorFromNode, createInjectableType, createMayBeForwardRefExpression, devOnlyGuardedExpression, emitDistinctChangesOnlyDefaultValue, encapsulateStyle, findMatchingDirectivesAndPipes, getHtmlTagDefinition, getNsPrefix, getSafePropertyAccessString, identifierName, isNgContainer, isNgContent, isNgTemplate, jsDocComment, leadingComment, literal, literalMap, makeBindingParser, mergeNsAndName, output_ast as outputAst, parseHostBindings, parseTemplate, preserveWhitespacesDefault, publishFacade, r3JitTypeSourceSpan, sanitizeIdentifier, splitNsName, visitAll$1 as tmplAstVisitAll, verifyHostBindings, visitAll };
33768
33942
  //# sourceMappingURL=compiler.mjs.map