@angular/core 18.1.0-next.3 → 18.1.0-rc.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 (55) hide show
  1. package/esm2022/primitives/event-dispatch/index.mjs +3 -2
  2. package/esm2022/primitives/event-dispatch/src/action_resolver.mjs +3 -3
  3. package/esm2022/primitives/event-dispatch/src/attribute.mjs +16 -52
  4. package/esm2022/primitives/event-dispatch/src/cache.mjs +17 -6
  5. package/esm2022/primitives/event-dispatch/src/char.mjs +1 -16
  6. package/esm2022/primitives/event-dispatch/src/event.mjs +2 -3
  7. package/esm2022/primitives/event-dispatch/src/eventcontract.mjs +6 -67
  8. package/esm2022/primitives/event-dispatch/src/property.mjs +17 -22
  9. package/esm2022/primitives/signals/index.mjs +3 -3
  10. package/esm2022/primitives/signals/src/signal.mjs +4 -1
  11. package/esm2022/src/change_detection/change_detector_ref.mjs +3 -2
  12. package/esm2022/src/change_detection/scheduling/zoneless_scheduling_impl.mjs +2 -2
  13. package/esm2022/src/core_private_export.mjs +3 -1
  14. package/esm2022/src/defer/instructions.mjs +2 -2
  15. package/esm2022/src/di/host_tag_name_token.mjs +4 -1
  16. package/esm2022/src/errors.mjs +1 -1
  17. package/esm2022/src/event_delegation_utils.mjs +40 -22
  18. package/esm2022/src/event_dispatch/event_delegation.mjs +38 -0
  19. package/esm2022/src/hydration/annotate.mjs +29 -18
  20. package/esm2022/src/hydration/error_handling.mjs +3 -1
  21. package/esm2022/src/hydration/event_replay.mjs +6 -5
  22. package/esm2022/src/hydration/i18n.mjs +102 -18
  23. package/esm2022/src/hydration/node_lookup_utils.mjs +12 -6
  24. package/esm2022/src/render3/collect_native_nodes.mjs +6 -1
  25. package/esm2022/src/render3/component_ref.mjs +1 -1
  26. package/esm2022/src/render3/instructions/i18n_icu_container_visitor.mjs +61 -51
  27. package/esm2022/src/render3/instructions/let_declaration.mjs +30 -7
  28. package/esm2022/src/render3/instructions/projection.mjs +14 -11
  29. package/esm2022/src/render3/instructions/shared.mjs +1 -1
  30. package/esm2022/src/render3/interfaces/node.mjs +2 -1
  31. package/esm2022/src/render3/node_assert.mjs +9 -8
  32. package/esm2022/src/render3/node_manipulation.mjs +10 -3
  33. package/esm2022/src/version.mjs +1 -1
  34. package/esm2022/testing/src/logger.mjs +3 -3
  35. package/fesm2022/core.mjs +358 -164
  36. package/fesm2022/core.mjs.map +1 -1
  37. package/fesm2022/primitives/event-dispatch.mjs +54 -243
  38. package/fesm2022/primitives/event-dispatch.mjs.map +1 -1
  39. package/fesm2022/primitives/signals.mjs +5 -2
  40. package/fesm2022/primitives/signals.mjs.map +1 -1
  41. package/fesm2022/rxjs-interop.mjs +1 -1
  42. package/fesm2022/testing.mjs +1 -1
  43. package/index.d.ts +39 -4
  44. package/package.json +1 -1
  45. package/primitives/event-dispatch/index.d.ts +22 -102
  46. package/primitives/signals/index.d.ts +10 -1
  47. package/rxjs-interop/index.d.ts +1 -1
  48. package/schematics/migrations/invalid-two-way-bindings/bundle.js +31 -11
  49. package/schematics/migrations/invalid-two-way-bindings/bundle.js.map +3 -3
  50. package/schematics/ng-generate/control-flow-migration/bundle.js +31 -11
  51. package/schematics/ng-generate/control-flow-migration/bundle.js.map +3 -3
  52. package/schematics/ng-generate/standalone-migration/bundle.js +126 -47
  53. package/schematics/ng-generate/standalone-migration/bundle.js.map +4 -4
  54. package/testing/index.d.ts +1 -1
  55. package/esm2022/primitives/event-dispatch/src/dom.mjs +0 -48
package/fesm2022/core.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v18.1.0-next.3
2
+ * @license Angular v18.1.0-rc.0
3
3
  * (c) 2010-2024 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -7,8 +7,7 @@
7
7
  import { SIGNAL_NODE as SIGNAL_NODE$1, signalSetFn as signalSetFn$1, producerAccessed as producerAccessed$1, SIGNAL as SIGNAL$1, getActiveConsumer as getActiveConsumer$1, setActiveConsumer as setActiveConsumer$1, consumerDestroy as consumerDestroy$1, REACTIVE_NODE as REACTIVE_NODE$1, consumerBeforeComputation as consumerBeforeComputation$1, consumerAfterComputation as consumerAfterComputation$1, consumerPollProducersForChange as consumerPollProducersForChange$1, createSignal as createSignal$1, signalUpdateFn as signalUpdateFn$1, createComputed as createComputed$1, setThrowInvalidWriteToSignalError as setThrowInvalidWriteToSignalError$1, createWatch as createWatch$1 } from '@angular/core/primitives/signals';
8
8
  import { BehaviorSubject, Subject, Subscription } from 'rxjs';
9
9
  import { map, first } from 'rxjs/operators';
10
- import * as Attributes from '@angular/core/primitives/event-dispatch';
11
- import { EventContract, EventContractContainer, EventDispatcher, registerDispatcher, isSupportedEvent, isCaptureEvent } from '@angular/core/primitives/event-dispatch';
10
+ import { Attribute as Attribute$1, isSupportedEvent, registerEventType, unregisterEventType, EventContract, EventContractContainer, EventDispatcher, registerDispatcher, isCaptureEvent } from '@angular/core/primitives/event-dispatch';
12
11
 
13
12
  /**
14
13
  * Base URL for the error details page.
@@ -5317,6 +5316,7 @@ function toTNodeTypeAsString(tNodeType) {
5317
5316
  tNodeType & 16 /* TNodeType.Projection */ && (text += '|Projection');
5318
5317
  tNodeType & 32 /* TNodeType.Icu */ && (text += '|IcuContainer');
5319
5318
  tNodeType & 64 /* TNodeType.Placeholder */ && (text += '|Placeholder');
5319
+ tNodeType & 128 /* TNodeType.LetDeclaration */ && (text += '|LetDeclaration');
5320
5320
  return text.length > 0 ? text.substring(1) : text;
5321
5321
  }
5322
5322
  /**
@@ -5392,13 +5392,14 @@ function assertTNodeType(tNode, expectedTypes, message) {
5392
5392
  }
5393
5393
  }
5394
5394
  function assertPureTNodeType(type) {
5395
- if (!(type === 2 /* TNodeType.Element */ || //
5396
- type === 1 /* TNodeType.Text */ || //
5397
- type === 4 /* TNodeType.Container */ || //
5398
- type === 8 /* TNodeType.ElementContainer */ || //
5399
- type === 32 /* TNodeType.Icu */ || //
5400
- type === 16 /* TNodeType.Projection */ || //
5401
- type === 64 /* TNodeType.Placeholder */)) {
5395
+ if (!(type === 2 /* TNodeType.Element */ ||
5396
+ type === 1 /* TNodeType.Text */ ||
5397
+ type === 4 /* TNodeType.Container */ ||
5398
+ type === 8 /* TNodeType.ElementContainer */ ||
5399
+ type === 32 /* TNodeType.Icu */ ||
5400
+ type === 16 /* TNodeType.Projection */ ||
5401
+ type === 64 /* TNodeType.Placeholder */ ||
5402
+ type === 128 /* TNodeType.LetDeclaration */)) {
5402
5403
  throwError(`Expected TNodeType to have only a single type selected, but got ${toTNodeTypeAsString(type)}.`);
5403
5404
  }
5404
5405
  }
@@ -6596,6 +6597,9 @@ function getDevModeNodeName(tNode) {
6596
6597
  else if (tNode.type & 4 /* TNodeType.Container */) {
6597
6598
  return 'an <ng-template>';
6598
6599
  }
6600
+ else if (tNode.type & 128 /* TNodeType.LetDeclaration */) {
6601
+ return 'an @let declaration';
6602
+ }
6599
6603
  else {
6600
6604
  return 'a node';
6601
6605
  }
@@ -10840,8 +10844,10 @@ function getParentRElement(tView, tNode, lView) {
10840
10844
  function getClosestRElement(tView, tNode, lView) {
10841
10845
  let parentTNode = tNode;
10842
10846
  // Skip over element and ICU containers as those are represented by a comment node and
10843
- // can't be used as a render parent.
10844
- while (parentTNode !== null && parentTNode.type & (8 /* TNodeType.ElementContainer */ | 32 /* TNodeType.Icu */)) {
10847
+ // can't be used as a render parent. Also skip let declarations since they don't have a
10848
+ // corresponding DOM node at all.
10849
+ while (parentTNode !== null &&
10850
+ parentTNode.type & (8 /* TNodeType.ElementContainer */ | 32 /* TNodeType.Icu */ | 128 /* TNodeType.LetDeclaration */)) {
10845
10851
  tNode = parentTNode;
10846
10852
  parentTNode = tNode.parent;
10847
10853
  }
@@ -11091,6 +11097,11 @@ function clearElementContents(rElement) {
11091
11097
  function applyNodes(renderer, action, tNode, lView, parentRElement, beforeNode, isProjection) {
11092
11098
  while (tNode != null) {
11093
11099
  ngDevMode && assertTNodeForLView(tNode, lView);
11100
+ // Let declarations don't have corresponding DOM nodes so we skip over them.
11101
+ if (tNode.type === 128 /* TNodeType.LetDeclaration */) {
11102
+ tNode = tNode.next;
11103
+ continue;
11104
+ }
11094
11105
  ngDevMode &&
11095
11106
  assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */ | 16 /* TNodeType.Projection */ | 32 /* TNodeType.Icu */);
11096
11107
  const rawSlotValue = lView[tNode.index];
@@ -12941,6 +12952,11 @@ function removeLViewFromLContainer(lContainer, index) {
12941
12952
 
12942
12953
  function collectNativeNodes(tView, lView, tNode, result, isProjection = false) {
12943
12954
  while (tNode !== null) {
12955
+ // Let declarations don't have corresponding DOM nodes so we skip over them.
12956
+ if (tNode.type === 128 /* TNodeType.LetDeclaration */) {
12957
+ tNode = isProjection ? tNode.projectionNext : tNode.next;
12958
+ continue;
12959
+ }
12944
12960
  ngDevMode &&
12945
12961
  assertTNodeType(tNode, 3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */ | 16 /* TNodeType.Projection */ | 32 /* TNodeType.Icu */);
12946
12962
  const lNode = lView[tNode.index];
@@ -13882,6 +13898,8 @@ function getFriendlyStringFromTNodeType(tNodeType) {
13882
13898
  return 'projection';
13883
13899
  case 1 /* TNodeType.Text */:
13884
13900
  return 'text';
13901
+ case 128 /* TNodeType.LetDeclaration */:
13902
+ return '@let';
13885
13903
  default:
13886
13904
  // This should not happen as we cover all possible TNode types above.
13887
13905
  return '<unknown>';
@@ -14476,6 +14494,89 @@ function isRootTemplateMessage(subTemplateIndex) {
14476
14494
  return subTemplateIndex === -1;
14477
14495
  }
14478
14496
 
14497
+ function enterIcu(state, tIcu, lView) {
14498
+ state.index = 0;
14499
+ const currentCase = getCurrentICUCaseIndex(tIcu, lView);
14500
+ if (currentCase !== null) {
14501
+ ngDevMode && assertNumberInRange(currentCase, 0, tIcu.cases.length - 1);
14502
+ state.removes = tIcu.remove[currentCase];
14503
+ }
14504
+ else {
14505
+ state.removes = EMPTY_ARRAY;
14506
+ }
14507
+ }
14508
+ function icuContainerIteratorNext(state) {
14509
+ if (state.index < state.removes.length) {
14510
+ const removeOpCode = state.removes[state.index++];
14511
+ ngDevMode && assertNumber(removeOpCode, 'Expecting OpCode number');
14512
+ if (removeOpCode > 0) {
14513
+ const rNode = state.lView[removeOpCode];
14514
+ ngDevMode && assertDomNode(rNode);
14515
+ return rNode;
14516
+ }
14517
+ else {
14518
+ state.stack.push(state.index, state.removes);
14519
+ // ICUs are represented by negative indices
14520
+ const tIcuIndex = ~removeOpCode;
14521
+ const tIcu = state.lView[TVIEW].data[tIcuIndex];
14522
+ ngDevMode && assertTIcu(tIcu);
14523
+ enterIcu(state, tIcu, state.lView);
14524
+ return icuContainerIteratorNext(state);
14525
+ }
14526
+ }
14527
+ else {
14528
+ if (state.stack.length === 0) {
14529
+ return null;
14530
+ }
14531
+ else {
14532
+ state.removes = state.stack.pop();
14533
+ state.index = state.stack.pop();
14534
+ return icuContainerIteratorNext(state);
14535
+ }
14536
+ }
14537
+ }
14538
+ function loadIcuContainerVisitor() {
14539
+ const _state = {
14540
+ stack: [],
14541
+ index: -1,
14542
+ };
14543
+ /**
14544
+ * Retrieves a set of root nodes from `TIcu.remove`. Used by `TNodeType.ICUContainer`
14545
+ * to determine which root belong to the ICU.
14546
+ *
14547
+ * Example of usage.
14548
+ * ```
14549
+ * const nextRNode = icuContainerIteratorStart(tIcuContainerNode, lView);
14550
+ * let rNode: RNode|null;
14551
+ * while(rNode = nextRNode()) {
14552
+ * console.log(rNode);
14553
+ * }
14554
+ * ```
14555
+ *
14556
+ * @param tIcuContainerNode Current `TIcuContainerNode`
14557
+ * @param lView `LView` where the `RNode`s should be looked up.
14558
+ */
14559
+ function icuContainerIteratorStart(tIcuContainerNode, lView) {
14560
+ _state.lView = lView;
14561
+ while (_state.stack.length)
14562
+ _state.stack.pop();
14563
+ ngDevMode && assertTNodeForLView(tIcuContainerNode, lView);
14564
+ enterIcu(_state, tIcuContainerNode.value, lView);
14565
+ return icuContainerIteratorNext.bind(null, _state);
14566
+ }
14567
+ return icuContainerIteratorStart;
14568
+ }
14569
+ function createIcuIterator(tIcu, lView) {
14570
+ const state = {
14571
+ stack: [],
14572
+ index: -1,
14573
+ lView,
14574
+ };
14575
+ ngDevMode && assertTIcu(tIcu);
14576
+ enterIcu(state, tIcu, lView);
14577
+ return icuContainerIteratorNext.bind(null, state);
14578
+ }
14579
+
14479
14580
  /**
14480
14581
  * Regexp that extracts a reference node information from the compressed node location.
14481
14582
  * The reference node is represented as either:
@@ -14547,15 +14648,21 @@ function getNoOffsetIndex(tNode) {
14547
14648
  }
14548
14649
  /**
14549
14650
  * Check whether a given node exists, but is disconnected from the DOM.
14651
+ */
14652
+ function isDisconnectedNode(tNode, lView) {
14653
+ return (!(tNode.type & (16 /* TNodeType.Projection */ | 128 /* TNodeType.LetDeclaration */)) &&
14654
+ !!lView[tNode.index] &&
14655
+ isDisconnectedRNode(unwrapRNode(lView[tNode.index])));
14656
+ }
14657
+ /**
14658
+ * Check whether the given node exists, but is disconnected from the DOM.
14550
14659
  *
14551
14660
  * Note: we leverage the fact that we have this information available in the DOM emulation
14552
14661
  * layer (in Domino) for now. Longer-term solution should not rely on the DOM emulation and
14553
14662
  * only use internal data structures and state to compute this information.
14554
14663
  */
14555
- function isDisconnectedNode(tNode, lView) {
14556
- return (!(tNode.type & 16 /* TNodeType.Projection */) &&
14557
- !!lView[tNode.index] &&
14558
- !unwrapRNode(lView[tNode.index])?.isConnected);
14664
+ function isDisconnectedRNode(rNode) {
14665
+ return !!rNode && !rNode.isConnected;
14559
14666
  }
14560
14667
  /**
14561
14668
  * Locate a node in an i18n tree that corresponds to a given instruction index.
@@ -14819,7 +14926,7 @@ function calcPathForNode(tNode, lView, excludedParentNodes) {
14819
14926
  referenceNodeName = renderStringify(parentIndex - HEADER_OFFSET);
14820
14927
  }
14821
14928
  let rNode = unwrapRNode(lView[tNode.index]);
14822
- if (tNode.type & 12 /* TNodeType.AnyContainer */) {
14929
+ if (tNode.type & (12 /* TNodeType.AnyContainer */ | 32 /* TNodeType.Icu */)) {
14823
14930
  // For <ng-container> nodes, instead of serializing a reference
14824
14931
  // to the anchor comment node, serialize a location of the first
14825
14932
  // DOM element. Paired with the container size (serialized as a part
@@ -14951,30 +15058,104 @@ function trySerializeI18nBlock(lView, index, context) {
14951
15058
  if (!tI18n || !tI18n.ast) {
14952
15059
  return null;
14953
15060
  }
14954
- const caseQueue = [];
14955
- tI18n.ast.forEach((node) => serializeI18nBlock(lView, caseQueue, context, node));
14956
- return caseQueue.length > 0 ? caseQueue : null;
15061
+ const serializedI18nBlock = {
15062
+ caseQueue: [],
15063
+ disconnectedNodes: new Set(),
15064
+ disjointNodes: new Set(),
15065
+ };
15066
+ serializeI18nBlock(lView, serializedI18nBlock, context, tI18n.ast);
15067
+ return serializedI18nBlock.caseQueue.length === 0 &&
15068
+ serializedI18nBlock.disconnectedNodes.size === 0 &&
15069
+ serializedI18nBlock.disjointNodes.size === 0
15070
+ ? null
15071
+ : serializedI18nBlock;
15072
+ }
15073
+ function serializeI18nBlock(lView, serializedI18nBlock, context, nodes) {
15074
+ let prevRNode = null;
15075
+ for (const node of nodes) {
15076
+ const nextRNode = serializeI18nNode(lView, serializedI18nBlock, context, node);
15077
+ if (nextRNode) {
15078
+ if (isDisjointNode(prevRNode, nextRNode)) {
15079
+ serializedI18nBlock.disjointNodes.add(node.index - HEADER_OFFSET);
15080
+ }
15081
+ prevRNode = nextRNode;
15082
+ }
15083
+ }
15084
+ return prevRNode;
14957
15085
  }
14958
- function serializeI18nBlock(lView, caseQueue, context, node) {
15086
+ /**
15087
+ * Helper to determine whether the given nodes are "disjoint".
15088
+ *
15089
+ * The i18n hydration process walks through the DOM and i18n nodes
15090
+ * at the same time. It expects the sibling DOM node of the previous
15091
+ * i18n node to be the first node of the next i18n node.
15092
+ *
15093
+ * In cases of content projection, this won't always be the case. So
15094
+ * when we detect that, we mark the node as "disjoint", ensuring that
15095
+ * we will serialize the path to the node. This way, when we hydrate the
15096
+ * i18n node, we will be able to find the correct place to start.
15097
+ */
15098
+ function isDisjointNode(prevNode, nextNode) {
15099
+ return prevNode && prevNode.nextSibling !== nextNode;
15100
+ }
15101
+ /**
15102
+ * Process the given i18n node for serialization.
15103
+ * Returns the first RNode for the i18n node to begin hydration.
15104
+ */
15105
+ function serializeI18nNode(lView, serializedI18nBlock, context, node) {
15106
+ const maybeRNode = unwrapRNode(lView[node.index]);
15107
+ if (!maybeRNode || isDisconnectedRNode(maybeRNode)) {
15108
+ serializedI18nBlock.disconnectedNodes.add(node.index - HEADER_OFFSET);
15109
+ return null;
15110
+ }
15111
+ const rNode = maybeRNode;
14959
15112
  switch (node.kind) {
14960
- case 0 /* I18nNodeKind.TEXT */:
14961
- const rNode = unwrapRNode(lView[node.index]);
15113
+ case 0 /* I18nNodeKind.TEXT */: {
14962
15114
  processTextNodeBeforeSerialization(context, rNode);
14963
15115
  break;
15116
+ }
14964
15117
  case 1 /* I18nNodeKind.ELEMENT */:
14965
- case 2 /* I18nNodeKind.PLACEHOLDER */:
14966
- node.children.forEach((node) => serializeI18nBlock(lView, caseQueue, context, node));
15118
+ case 2 /* I18nNodeKind.PLACEHOLDER */: {
15119
+ serializeI18nBlock(lView, serializedI18nBlock, context, node.children);
14967
15120
  break;
14968
- case 3 /* I18nNodeKind.ICU */:
15121
+ }
15122
+ case 3 /* I18nNodeKind.ICU */: {
14969
15123
  const currentCase = lView[node.currentCaseLViewIndex];
14970
15124
  if (currentCase != null) {
14971
15125
  // i18n uses a negative value to signal a change to a new case, so we
14972
15126
  // need to invert it to get the proper value.
14973
15127
  const caseIdx = currentCase < 0 ? ~currentCase : currentCase;
14974
- caseQueue.push(caseIdx);
14975
- node.cases[caseIdx].forEach((node) => serializeI18nBlock(lView, caseQueue, context, node));
15128
+ serializedI18nBlock.caseQueue.push(caseIdx);
15129
+ serializeI18nBlock(lView, serializedI18nBlock, context, node.cases[caseIdx]);
14976
15130
  }
14977
15131
  break;
15132
+ }
15133
+ }
15134
+ return getFirstNativeNodeForI18nNode(lView, node);
15135
+ }
15136
+ /**
15137
+ * Helper function to get the first native node to begin hydrating
15138
+ * the given i18n node.
15139
+ */
15140
+ function getFirstNativeNodeForI18nNode(lView, node) {
15141
+ const tView = lView[TVIEW];
15142
+ const maybeTNode = tView.data[node.index];
15143
+ if (isTNodeShape(maybeTNode)) {
15144
+ // If the node is backed by an actual TNode, we can simply delegate.
15145
+ return getFirstNativeNode(lView, maybeTNode);
15146
+ }
15147
+ else if (node.kind === 3 /* I18nNodeKind.ICU */) {
15148
+ // A nested ICU container won't have an actual TNode. In that case, we can use
15149
+ // an iterator to find the first child.
15150
+ const icuIterator = createIcuIterator(maybeTNode, lView);
15151
+ let rNode = icuIterator();
15152
+ // If the ICU container has no nodes, then we use the ICU anchor as the node.
15153
+ return rNode ?? unwrapRNode(lView[node.index]);
15154
+ }
15155
+ else {
15156
+ // Otherwise, the node is a text or trivial element in an ICU container,
15157
+ // and we can just use the RNode directly.
15158
+ return unwrapRNode(lView[node.index]) ?? null;
14978
15159
  }
14979
15160
  }
14980
15161
  function setCurrentNode(state, node) {
@@ -15067,16 +15248,24 @@ function prepareI18nBlockForHydrationImpl(lView, index, parentTNode, subTemplate
15067
15248
  }
15068
15249
  function collectI18nNodesFromDom(context, state, nodeOrNodes) {
15069
15250
  if (Array.isArray(nodeOrNodes)) {
15251
+ let nextState = state;
15070
15252
  for (const node of nodeOrNodes) {
15071
- // If the node is being projected elsewhere, we need to temporarily
15072
- // branch the state to that location to continue hydration.
15073
- // Otherwise, we continue hydration from the current location.
15253
+ // Whenever a node doesn't directly follow the previous RNode, it
15254
+ // is given a path. We need to resume collecting nodes from that location
15255
+ // until and unless we find another disjoint node.
15074
15256
  const targetNode = tryLocateRNodeByPath(context.hydrationInfo, context.lView, node.index - HEADER_OFFSET);
15075
- const nextState = targetNode ? forkHydrationState(state, targetNode) : state;
15257
+ if (targetNode) {
15258
+ nextState = forkHydrationState(state, targetNode);
15259
+ }
15076
15260
  collectI18nNodesFromDom(context, nextState, node);
15077
15261
  }
15078
15262
  }
15079
15263
  else {
15264
+ if (context.disconnectedNodes.has(nodeOrNodes.index - HEADER_OFFSET)) {
15265
+ // i18n nodes can be considered disconnected if e.g. they were projected.
15266
+ // In that case, we have to make sure to skip over them.
15267
+ return;
15268
+ }
15080
15269
  switch (nodeOrNodes.kind) {
15081
15270
  case 0 /* I18nNodeKind.TEXT */: {
15082
15271
  // Claim a text node for hydration
@@ -17011,7 +17200,7 @@ function createRootComponent(componentView, rootComponentDef, rootDirectives, ho
17011
17200
  function setRootNodeAttributes(hostRenderer, componentDef, hostRNode, rootSelectorOrNode) {
17012
17201
  if (rootSelectorOrNode) {
17013
17202
  // The placeholder will be replaced with the actual version at build time.
17014
- setUpAttributes(hostRenderer, hostRNode, ['ng-version', '18.1.0-next.3']);
17203
+ setUpAttributes(hostRenderer, hostRNode, ['ng-version', '18.1.0-rc.0']);
17015
17204
  }
17016
17205
  else {
17017
17206
  // If host element is created as a part of this function call (i.e. `rootSelectorOrNode`
@@ -20813,7 +21002,7 @@ function triggerResourceLoading(tDetails, lView, tNode) {
20813
21002
  if (failed) {
20814
21003
  tDetails.loadingState = DeferDependenciesLoadingState.FAILED;
20815
21004
  if (tDetails.errorTmplIndex === null) {
20816
- const templateLocation = getTemplateLocationDetails(lView);
21005
+ const templateLocation = ngDevMode ? getTemplateLocationDetails(lView) : '';
20817
21006
  const error = new RuntimeError(750 /* RuntimeErrorCode.DEFER_LOADING_FAILED */, ngDevMode &&
20818
21007
  'Loading dependencies for `@defer` block failed, ' +
20819
21008
  `but no \`@error\` block was configured${templateLocation}. ` +
@@ -25096,79 +25285,6 @@ function getCaseIndex(icuExpression, bindingValue) {
25096
25285
  return index === -1 ? null : index;
25097
25286
  }
25098
25287
 
25099
- function loadIcuContainerVisitor() {
25100
- const _stack = [];
25101
- let _index = -1;
25102
- let _lView;
25103
- let _removes;
25104
- /**
25105
- * Retrieves a set of root nodes from `TIcu.remove`. Used by `TNodeType.ICUContainer`
25106
- * to determine which root belong to the ICU.
25107
- *
25108
- * Example of usage.
25109
- * ```
25110
- * const nextRNode = icuContainerIteratorStart(tIcuContainerNode, lView);
25111
- * let rNode: RNode|null;
25112
- * while(rNode = nextRNode()) {
25113
- * console.log(rNode);
25114
- * }
25115
- * ```
25116
- *
25117
- * @param tIcuContainerNode Current `TIcuContainerNode`
25118
- * @param lView `LView` where the `RNode`s should be looked up.
25119
- */
25120
- function icuContainerIteratorStart(tIcuContainerNode, lView) {
25121
- _lView = lView;
25122
- while (_stack.length)
25123
- _stack.pop();
25124
- ngDevMode && assertTNodeForLView(tIcuContainerNode, lView);
25125
- enterIcu(tIcuContainerNode.value, lView);
25126
- return icuContainerIteratorNext;
25127
- }
25128
- function enterIcu(tIcu, lView) {
25129
- _index = 0;
25130
- const currentCase = getCurrentICUCaseIndex(tIcu, lView);
25131
- if (currentCase !== null) {
25132
- ngDevMode && assertNumberInRange(currentCase, 0, tIcu.cases.length - 1);
25133
- _removes = tIcu.remove[currentCase];
25134
- }
25135
- else {
25136
- _removes = EMPTY_ARRAY;
25137
- }
25138
- }
25139
- function icuContainerIteratorNext() {
25140
- if (_index < _removes.length) {
25141
- const removeOpCode = _removes[_index++];
25142
- ngDevMode && assertNumber(removeOpCode, 'Expecting OpCode number');
25143
- if (removeOpCode > 0) {
25144
- const rNode = _lView[removeOpCode];
25145
- ngDevMode && assertDomNode(rNode);
25146
- return rNode;
25147
- }
25148
- else {
25149
- _stack.push(_index, _removes);
25150
- // ICUs are represented by negative indices
25151
- const tIcuIndex = ~removeOpCode;
25152
- const tIcu = _lView[TVIEW].data[tIcuIndex];
25153
- ngDevMode && assertTIcu(tIcu);
25154
- enterIcu(tIcu, _lView);
25155
- return icuContainerIteratorNext();
25156
- }
25157
- }
25158
- else {
25159
- if (_stack.length === 0) {
25160
- return null;
25161
- }
25162
- else {
25163
- _removes = _stack.pop();
25164
- _index = _stack.pop();
25165
- return icuContainerIteratorNext();
25166
- }
25167
- }
25168
- }
25169
- return icuContainerIteratorStart;
25170
- }
25171
-
25172
25288
  /**
25173
25289
  * Converts `I18nCreateOpCodes` array into a human readable format.
25174
25290
  *
@@ -26621,17 +26737,20 @@ function ɵɵprojectionDef(projectionSlots) {
26621
26737
  const tails = projectionHeads.slice();
26622
26738
  let componentChild = componentNode.child;
26623
26739
  while (componentChild !== null) {
26624
- const slotIndex = projectionSlots
26625
- ? matchingProjectionSlotIndex(componentChild, projectionSlots)
26626
- : 0;
26627
- if (slotIndex !== null) {
26628
- if (tails[slotIndex]) {
26629
- tails[slotIndex].projectionNext = componentChild;
26630
- }
26631
- else {
26632
- projectionHeads[slotIndex] = componentChild;
26740
+ // Do not project let declarations so they don't occupy a slot.
26741
+ if (componentChild.type !== 128 /* TNodeType.LetDeclaration */) {
26742
+ const slotIndex = projectionSlots
26743
+ ? matchingProjectionSlotIndex(componentChild, projectionSlots)
26744
+ : 0;
26745
+ if (slotIndex !== null) {
26746
+ if (tails[slotIndex]) {
26747
+ tails[slotIndex].projectionNext = componentChild;
26748
+ }
26749
+ else {
26750
+ projectionHeads[slotIndex] = componentChild;
26751
+ }
26752
+ tails[slotIndex] = componentChild;
26633
26753
  }
26634
- tails[slotIndex] = componentChild;
26635
26754
  }
26636
26755
  componentChild = componentChild.next;
26637
26756
  }
@@ -28360,36 +28479,52 @@ function ɵɵtwoWayListener(eventName, listenerFn) {
28360
28479
  * Use of this source code is governed by an MIT-style license that can be
28361
28480
  * found in the LICENSE file at https://angular.io/license
28362
28481
  */
28482
+ /** Object that indicates the value of a `@let` declaration that hasn't been initialized yet. */
28483
+ const UNINITIALIZED_LET = {};
28363
28484
  /**
28364
- * Declares an `@let` at a specific data slot.
28485
+ * Declares an `@let` at a specific data slot. Returns itself to allow chaining.
28365
28486
  *
28366
28487
  * @param index Index at which to declare the `@let`.
28367
28488
  *
28368
28489
  * @codeGenApi
28369
28490
  */
28370
28491
  function ɵɵdeclareLet(index) {
28371
- // TODO(crisbeto): implement this
28492
+ const tView = getTView();
28493
+ const lView = getLView();
28494
+ const adjustedIndex = index + HEADER_OFFSET;
28495
+ const tNode = getOrCreateTNode(tView, adjustedIndex, 128 /* TNodeType.LetDeclaration */, null, null);
28496
+ setCurrentTNode(tNode, false);
28497
+ store(tView, lView, adjustedIndex, UNINITIALIZED_LET);
28372
28498
  return ɵɵdeclareLet;
28373
28499
  }
28374
28500
  /**
28375
28501
  * Instruction that stores the value of a `@let` declaration on the current view.
28502
+ * Returns the value to allow usage inside variable initializers.
28376
28503
  *
28377
28504
  * @codeGenApi
28378
28505
  */
28379
28506
  function ɵɵstoreLet(value) {
28380
- // TODO(crisbeto): implement this
28507
+ performanceMarkFeature('NgLet');
28508
+ const tView = getTView();
28509
+ const lView = getLView();
28510
+ const index = getSelectedIndex();
28511
+ store(tView, lView, index, value);
28381
28512
  return value;
28382
28513
  }
28383
28514
  /**
28384
- * Retrieves the value of a `@let` declaration defined within the same view.
28515
+ * Retrieves the value of a `@let` declaration defined in a parent view.
28385
28516
  *
28386
28517
  * @param index Index of the declaration within the view.
28387
28518
  *
28388
28519
  * @codeGenApi
28389
28520
  */
28390
28521
  function ɵɵreadContextLet(index) {
28391
- // TODO(crisbeto): implement this
28392
- return null;
28522
+ const contextLView = getContextLView();
28523
+ const value = load(contextLView, HEADER_OFFSET + index);
28524
+ if (value === UNINITIALIZED_LET) {
28525
+ throw new RuntimeError(314 /* RuntimeErrorCode.UNINITIALIZED_LET_ACCESS */, ngDevMode && 'Attempting to access a @let declaration whose value is not available yet');
28526
+ }
28527
+ return value;
28393
28528
  }
28394
28529
 
28395
28530
  /*
@@ -30845,7 +30980,7 @@ class Version {
30845
30980
  /**
30846
30981
  * @publicApi
30847
30982
  */
30848
- const VERSION = new Version('18.1.0-next.3');
30983
+ const VERSION = new Version('18.1.0-rc.0');
30849
30984
 
30850
30985
  /*
30851
30986
  * This file exists to support compilation of @angular/core in Ivy mode.
@@ -33289,7 +33424,7 @@ class ChangeDetectionSchedulerImpl {
33289
33424
  *
33290
33425
  * @publicApi
33291
33426
  * @experimental
33292
- * @see {@link bootstrapApplication}
33427
+ * @see [bootstrapApplication](/api/platform-browser/bootstrapApplication)
33293
33428
  */
33294
33429
  function provideExperimentalZonelessChangeDetection() {
33295
33430
  performanceMarkFeature('NgZoneless');
@@ -34045,7 +34180,8 @@ function createViewRef(tNode, lView, isPipe) {
34045
34180
  const componentView = getComponentLViewByIndex(tNode.index, lView); // look down
34046
34181
  return new ViewRef$1(componentView, componentView);
34047
34182
  }
34048
- else if (tNode.type & (3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */ | 32 /* TNodeType.Icu */)) {
34183
+ else if (tNode.type &
34184
+ (3 /* TNodeType.AnyRNode */ | 12 /* TNodeType.AnyContainer */ | 32 /* TNodeType.Icu */ | 128 /* TNodeType.LetDeclaration */)) {
34049
34185
  // The LView represents the location where the injection is requested from.
34050
34186
  // We need to locate the containing LView (in case where the `lView` is an embedded view)
34051
34187
  const hostComponentView = lView[DECLARATION_COMPONENT_VIEW]; // look up
@@ -36231,6 +36367,9 @@ function signalUpdateFn(node, updater) {
36231
36367
  }
36232
36368
  signalSetFn(node, updater(node.value));
36233
36369
  }
36370
+ function runPostSignalSetFn() {
36371
+ postSignalSetFn?.();
36372
+ }
36234
36373
  // Note: Using an IIFE here to ensure that the spread assignment is not considered
36235
36374
  // a side-effect, ending up preserving `COMPUTED_NODE` and `REACTIVE_NODE`.
36236
36375
  // TODO: remove when https://github.com/evanw/esbuild/issues/3392 is resolved.
@@ -36619,14 +36758,13 @@ function invokeRegisteredListeners(event) {
36619
36758
  handler(event);
36620
36759
  }
36621
36760
  }
36622
- function setJSActionAttribute(nativeElement, eventTypes) {
36761
+ function setJSActionAttributes(nativeElement, eventTypes) {
36623
36762
  if (!eventTypes.length) {
36624
36763
  return;
36625
36764
  }
36626
36765
  const parts = eventTypes.reduce((prev, curr) => prev + curr + ':;', '');
36627
- const existingAttr = nativeElement.getAttribute(Attributes.JSACTION);
36628
- // This is required to be a module accessor to appease security tests on setAttribute.
36629
- nativeElement.setAttribute(Attributes.JSACTION, `${existingAttr ?? ''}${parts}`);
36766
+ const existingAttr = nativeElement.getAttribute(Attribute$1.JSACTION);
36767
+ nativeElement.setAttribute(Attribute$1.JSACTION, `${existingAttr ?? ''}${parts}`);
36630
36768
  }
36631
36769
  const sharedStashFunction = (rEl, eventType, listenerFn) => {
36632
36770
  const el = rEl;
@@ -36637,32 +36775,51 @@ const sharedStashFunction = (rEl, eventType, listenerFn) => {
36637
36775
  el.__jsaction_fns = eventListenerMap;
36638
36776
  };
36639
36777
  const removeListeners = (el) => {
36640
- el.removeAttribute(Attributes.JSACTION);
36778
+ el.removeAttribute(Attribute$1.JSACTION);
36641
36779
  el.__jsaction_fns = undefined;
36642
36780
  };
36781
+ const JSACTION_EVENT_CONTRACT = new InjectionToken(ngDevMode ? 'EVENT_CONTRACT_DETAILS' : '', {
36782
+ providedIn: 'root',
36783
+ factory: () => ({}),
36784
+ });
36785
+ const GLOBAL_EVENT_DELEGATION = new InjectionToken(ngDevMode ? 'GLOBAL_EVENT_DELEGATION' : '');
36786
+ /**
36787
+ * This class is the delegate for `EventDelegationPlugin`. It represents the
36788
+ * noop version of this class, with the enabled version set when
36789
+ * `provideGlobalEventDelegation` is called.
36790
+ */
36643
36791
  class GlobalEventDelegation {
36644
- addEvent(el, eventName) {
36645
- if (this.eventContract) {
36646
- this.eventContract.addEvent(eventName);
36647
- setJSActionAttribute(el, [eventName]);
36648
- return true;
36649
- }
36650
- return false;
36792
+ constructor() {
36793
+ this.eventContractDetails = inject(JSACTION_EVENT_CONTRACT);
36794
+ }
36795
+ ngOnDestroy() {
36796
+ this.eventContractDetails.instance?.cleanUp();
36797
+ }
36798
+ supports(eventName) {
36799
+ return isSupportedEvent(eventName);
36800
+ }
36801
+ addEventListener(element, eventName, handler) {
36802
+ this.eventContractDetails.instance.addEvent(eventName);
36803
+ registerEventType(element, eventName, '');
36804
+ return () => this.removeEventListener(element, eventName, handler);
36805
+ }
36806
+ removeEventListener(element, eventName, callback) {
36807
+ unregisterEventType(element, eventName);
36651
36808
  }
36652
36809
  static { this.ɵfac = function GlobalEventDelegation_Factory(t) { return new (t || GlobalEventDelegation)(); }; }
36653
- static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: GlobalEventDelegation, factory: GlobalEventDelegation.ɵfac, providedIn: 'root' }); }
36810
+ static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: GlobalEventDelegation, factory: GlobalEventDelegation.ɵfac }); }
36654
36811
  }
36655
36812
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(GlobalEventDelegation, [{
36656
- type: Injectable,
36657
- args: [{ providedIn: 'root' }]
36813
+ type: Injectable
36658
36814
  }], null, null); })();
36659
- const initGlobalEventDelegation = (eventDelegation, injector) => {
36815
+ const initGlobalEventDelegation = (eventContractDetails, injector) => {
36660
36816
  if (injector.get(IS_EVENT_REPLAY_ENABLED, EVENT_REPLAY_ENABLED_DEFAULT)) {
36661
36817
  return;
36662
36818
  }
36663
- eventDelegation.eventContract = new EventContract(new EventContractContainer(document.body));
36819
+ const eventContract = (eventContractDetails.instance = new EventContract(new EventContractContainer(document.body),
36820
+ /* useActionResolver= */ false));
36664
36821
  const dispatcher = new EventDispatcher(invokeRegisteredListeners);
36665
- registerDispatcher(eventDelegation.eventContract, dispatcher);
36822
+ registerDispatcher(eventContract, dispatcher);
36666
36823
  };
36667
36824
 
36668
36825
  const CONTRACT_PROPERTY = 'ngContracts';
@@ -36730,8 +36887,8 @@ function withEventReplay() {
36730
36887
  // of the application is completed. This timing is similar to the unclaimed
36731
36888
  // dehydrated views cleanup timing.
36732
36889
  whenStable(appRef).then(() => {
36733
- const globalEventDelegation = injector.get(GlobalEventDelegation);
36734
- initEventReplay(globalEventDelegation, injector);
36890
+ const eventContractDetails = injector.get(JSACTION_EVENT_CONTRACT);
36891
+ initEventReplay(eventContractDetails, injector);
36735
36892
  jsactionSet.forEach(removeListeners);
36736
36893
  // After hydration, we shouldn't need to do anymore work related to
36737
36894
  // event replay anymore.
@@ -36754,7 +36911,8 @@ const initEventReplay = (eventDelegation, injector) => {
36754
36911
  // This is set in packages/platform-server/src/utils.ts
36755
36912
  const container = globalThis[CONTRACT_PROPERTY]?.[appId];
36756
36913
  const earlyJsactionData = getJsactionData(container);
36757
- const eventContract = (eventDelegation.eventContract = new EventContract(new EventContractContainer(earlyJsactionData.c)));
36914
+ const eventContract = (eventDelegation.instance = new EventContract(new EventContractContainer(earlyJsactionData.c),
36915
+ /* useActionResolver= */ false));
36758
36916
  for (const et of earlyJsactionData.et) {
36759
36917
  eventContract.addEvent(et);
36760
36918
  }
@@ -37053,15 +37211,18 @@ function serializeLContainer(lContainer, context) {
37053
37211
  function appendSerializedNodePath(ngh, tNode, lView, excludedParentNodes) {
37054
37212
  const noOffsetIndex = tNode.index - HEADER_OFFSET;
37055
37213
  ngh[NODES] ??= {};
37056
- ngh[NODES][noOffsetIndex] = calcPathForNode(tNode, lView, excludedParentNodes);
37214
+ // Ensure we don't calculate the path multiple times.
37215
+ ngh[NODES][noOffsetIndex] ??= calcPathForNode(tNode, lView, excludedParentNodes);
37057
37216
  }
37058
37217
  /**
37059
37218
  * Helper function to append information about a disconnected node.
37060
37219
  * This info is needed at runtime to avoid DOM lookups for this element
37061
37220
  * and instead, the element would be created from scratch.
37062
37221
  */
37063
- function appendDisconnectedNodeIndex(ngh, tNode) {
37064
- const noOffsetIndex = tNode.index - HEADER_OFFSET;
37222
+ function appendDisconnectedNodeIndex(ngh, tNodeOrNoOffsetIndex) {
37223
+ const noOffsetIndex = typeof tNodeOrNoOffsetIndex === 'number'
37224
+ ? tNodeOrNoOffsetIndex
37225
+ : tNodeOrNoOffsetIndex.index - HEADER_OFFSET;
37065
37226
  ngh[DISCONNECTED_NODES] ??= [];
37066
37227
  if (!ngh[DISCONNECTED_NODES].includes(noOffsetIndex)) {
37067
37228
  ngh[DISCONNECTED_NODES].push(noOffsetIndex);
@@ -37092,7 +37253,15 @@ function serializeLView(lView, context) {
37092
37253
  const i18nData = trySerializeI18nBlock(lView, i, context);
37093
37254
  if (i18nData) {
37094
37255
  ngh[I18N_DATA] ??= {};
37095
- ngh[I18N_DATA][noOffsetIndex] = i18nData;
37256
+ ngh[I18N_DATA][noOffsetIndex] = i18nData.caseQueue;
37257
+ for (const nodeNoOffsetIndex of i18nData.disconnectedNodes) {
37258
+ appendDisconnectedNodeIndex(ngh, nodeNoOffsetIndex);
37259
+ }
37260
+ for (const nodeNoOffsetIndex of i18nData.disjointNodes) {
37261
+ const tNode = tView.data[nodeNoOffsetIndex + HEADER_OFFSET];
37262
+ ngDevMode && assertTNode(tNode);
37263
+ appendSerializedNodePath(ngh, tNode, lView, i18nChildren);
37264
+ }
37096
37265
  continue;
37097
37266
  }
37098
37267
  // Skip processing of a given slot in the following cases:
@@ -37126,7 +37295,7 @@ function serializeLView(lView, context) {
37126
37295
  if (nativeElementsToEventTypes && tNode.type & 2 /* TNodeType.Element */) {
37127
37296
  const nativeElement = unwrapRNode(lView[i]);
37128
37297
  if (nativeElementsToEventTypes.has(nativeElement)) {
37129
- setJSActionAttribute(nativeElement, nativeElementsToEventTypes.get(nativeElement));
37298
+ setJSActionAttributes(nativeElement, nativeElementsToEventTypes.get(nativeElement));
37130
37299
  }
37131
37300
  }
37132
37301
  if (Array.isArray(tNode.projection)) {
@@ -37205,13 +37374,14 @@ function serializeLView(lView, context) {
37205
37374
  ngh[ELEMENT_CONTAINERS] ??= {};
37206
37375
  ngh[ELEMENT_CONTAINERS][noOffsetIndex] = calcNumRootNodes(tView, lView, tNode.child);
37207
37376
  }
37208
- else if (tNode.type & 16 /* TNodeType.Projection */) {
37209
- // Current TNode represents an `<ng-content>` slot, thus it has no
37210
- // DOM elements associated with it, so the **next sibling** node would
37211
- // not be able to find an anchor. In this case, use full path instead.
37377
+ else if (tNode.type & (16 /* TNodeType.Projection */ | 128 /* TNodeType.LetDeclaration */)) {
37378
+ // Current TNode represents an `<ng-content>` slot or `@let` declaration,
37379
+ // thus it has no DOM elements associated with it, so the **next sibling**
37380
+ // node would not be able to find an anchor. In this case, use full path instead.
37212
37381
  let nextTNode = tNode.next;
37213
- // Skip over all `<ng-content>` slots in a row.
37214
- while (nextTNode !== null && nextTNode.type & 16 /* TNodeType.Projection */) {
37382
+ // Skip over all `<ng-content>` slots and `@let` declarations in a row.
37383
+ while (nextTNode !== null &&
37384
+ nextTNode.type & (16 /* TNodeType.Projection */ | 128 /* TNodeType.LetDeclaration */)) {
37215
37385
  nextTNode = nextTNode.next;
37216
37386
  }
37217
37387
  if (nextTNode && !isInSkipHydrationBlock(nextTNode)) {
@@ -37219,11 +37389,9 @@ function serializeLView(lView, context) {
37219
37389
  appendSerializedNodePath(ngh, nextTNode, lView, i18nChildren);
37220
37390
  }
37221
37391
  }
37222
- else {
37223
- if (tNode.type & 1 /* TNodeType.Text */) {
37224
- const rNode = unwrapRNode(lView[i]);
37225
- processTextNodeBeforeSerialization(context, rNode);
37226
- }
37392
+ else if (tNode.type & 1 /* TNodeType.Text */) {
37393
+ const rNode = unwrapRNode(lView[i]);
37394
+ processTextNodeBeforeSerialization(context, rNode);
37227
37395
  }
37228
37396
  }
37229
37397
  }
@@ -37574,6 +37742,32 @@ function verifySsrContentsIntegrity() {
37574
37742
  }
37575
37743
  }
37576
37744
 
37745
+ /**
37746
+ * Returns a set of providers required to setup support for event delegation.
37747
+ */
37748
+ function provideGlobalEventDelegation() {
37749
+ return [
37750
+ {
37751
+ provide: IS_GLOBAL_EVENT_DELEGATION_ENABLED,
37752
+ useValue: true,
37753
+ },
37754
+ {
37755
+ provide: ENVIRONMENT_INITIALIZER,
37756
+ useValue: () => {
37757
+ const injector = inject(Injector);
37758
+ const eventContractDetails = injector.get(JSACTION_EVENT_CONTRACT);
37759
+ initGlobalEventDelegation(eventContractDetails, injector);
37760
+ setStashFn(sharedStashFunction);
37761
+ },
37762
+ multi: true,
37763
+ },
37764
+ {
37765
+ provide: GLOBAL_EVENT_DELEGATION,
37766
+ useClass: GlobalEventDelegation,
37767
+ },
37768
+ ];
37769
+ }
37770
+
37577
37771
  /**
37578
37772
  * Queue a state update to be performed asynchronously.
37579
37773
  *
@@ -38139,5 +38333,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
38139
38333
  * Generated bundle index. Do not edit.
38140
38334
  */
38141
38335
 
38142
- export { ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, AfterRenderPhase, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory$1 as ComponentFactory, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, DestroyRef, Directive, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, ExperimentalPendingTasks, HOST_TAG_NAME, Host, HostAttributeToken, HostBinding, HostListener, INJECTOR$1 as INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, OutputEmitterRef, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, Pipe, PlatformRef, Query, QueryList, Renderer2, RendererFactory2, RendererStyleFlags2, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation$1 as ViewEncapsulation, ViewRef, afterNextRender, afterRender, asNativeElements, assertInInjectionContext, assertNotInReactiveContext, assertPlatform, booleanAttribute, computed, contentChild, contentChildren, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, input, isDevMode, isSignal, isStandalone, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, model, numberAttribute, output, platformCore, provideExperimentalCheckNoChangesForDebug, provideExperimentalZonelessChangeDetection, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, runInInjectionContext, setTestabilityGetter, signal, untracked, viewChild, viewChildren, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, AfterRenderEventManager as ɵAfterRenderEventManager, CONTAINER_HEADER_OFFSET as ɵCONTAINER_HEADER_OFFSET, ChangeDetectionScheduler as ɵChangeDetectionScheduler, ChangeDetectionSchedulerImpl as ɵChangeDetectionSchedulerImpl, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG as ɵDEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR as ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DeferBlockBehavior as ɵDeferBlockBehavior, DeferBlockState as ɵDeferBlockState, EffectScheduler as ɵEffectScheduler, IMAGE_CONFIG as ɵIMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS as ɵIMAGE_CONFIG_DEFAULTS, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, ɵINPUT_SIGNAL_BRAND_WRITE_TYPE, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, PROVIDED_NG_ZONE as ɵPROVIDED_NG_ZONE, PendingTasks as ɵPendingTasks, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, USE_RUNTIME_DEPS_TRACKER_FOR_JIT as ɵUSE_RUNTIME_DEPS_TRACKER_FOR_JIT, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, ZONELESS_ENABLED as ɵZONELESS_ENABLED, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, annotateForHydration as ɵannotateForHydration, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, depsTracker as ɵdepsTracker, detectChangesInViewIfRequired as ɵdetectChangesInViewIfRequired, devModeEqual as ɵdevModeEqual, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn, getDebugNode as ɵgetDebugNode, getDeferBlocks as ɵgetDeferBlocks, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getOutputDestroyRef as ɵgetOutputDestroyRef, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalAfterNextRender as ɵinternalAfterNextRender, internalCreateApplication as ɵinternalCreateApplication, internalProvideZoneChangeDetection as ɵinternalProvideZoneChangeDetection, isBoundToModule as ɵisBoundToModule, isComponentDefPendingResolution as ɵisComponentDefPendingResolution, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, performanceMarkFeature as ɵperformanceMarkFeature, queueStateUpdate as ɵqueueStateUpdate, readHydrationInfo as ɵreadHydrationInfo, registerLocaleData as ɵregisterLocaleData, renderDeferBlockState as ɵrenderDeferBlockState, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, restoreComponentResolutionQueue as ɵrestoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, ɵsetClassDebugInfo, setClassMetadata as ɵsetClassMetadata, setClassMetadataAsync as ɵsetClassMetadataAsync, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setInjectorProfilerContext as ɵsetInjectorProfilerContext, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, triggerResourceLoading as ɵtriggerResourceLoading, truncateMiddle as ɵtruncateMiddle, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵunwrapWritableSignal, whenStable as ɵwhenStable, withDomHydration as ɵwithDomHydration, withEventReplay as ɵwithEventReplay, withI18nSupport as ɵwithI18nSupport, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵInputTransformsFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵStandaloneFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵdeclareLet, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵdeferOnHover, ɵɵdeferOnIdle, ɵɵdeferOnImmediate, ɵɵdeferOnInteraction, ɵɵdeferOnTimer, ɵɵdeferOnViewport, ɵɵdeferPrefetchOnHover, ɵɵdeferPrefetchOnIdle, ɵɵdeferPrefetchOnImmediate, ɵɵdeferPrefetchOnInteraction, ɵɵdeferPrefetchOnTimer, ɵɵdeferPrefetchOnViewport, ɵɵdeferPrefetchWhen, ɵɵdeferWhen, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetComponentDepsFactory, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareClassMetadataAsync, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryAdvance, ɵɵqueryRefresh, ɵɵreadContextLet, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstoreLet, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateIframeAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
38336
+ export { ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, AfterRenderPhase, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory$1 as ComponentFactory, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, DestroyRef, Directive, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, ExperimentalPendingTasks, HOST_TAG_NAME, Host, HostAttributeToken, HostBinding, HostListener, INJECTOR$1 as INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, OutputEmitterRef, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, Pipe, PlatformRef, Query, QueryList, Renderer2, RendererFactory2, RendererStyleFlags2, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation$1 as ViewEncapsulation, ViewRef, afterNextRender, afterRender, asNativeElements, assertInInjectionContext, assertNotInReactiveContext, assertPlatform, booleanAttribute, computed, contentChild, contentChildren, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, input, isDevMode, isSignal, isStandalone, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, model, numberAttribute, output, platformCore, provideExperimentalCheckNoChangesForDebug, provideExperimentalZonelessChangeDetection, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, runInInjectionContext, setTestabilityGetter, signal, untracked, viewChild, viewChildren, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, AfterRenderEventManager as ɵAfterRenderEventManager, CONTAINER_HEADER_OFFSET as ɵCONTAINER_HEADER_OFFSET, ChangeDetectionScheduler as ɵChangeDetectionScheduler, ChangeDetectionSchedulerImpl as ɵChangeDetectionSchedulerImpl, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG as ɵDEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR as ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DeferBlockBehavior as ɵDeferBlockBehavior, DeferBlockState as ɵDeferBlockState, EffectScheduler as ɵEffectScheduler, GLOBAL_EVENT_DELEGATION as ɵGLOBAL_EVENT_DELEGATION, IMAGE_CONFIG as ɵIMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS as ɵIMAGE_CONFIG_DEFAULTS, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, ɵINPUT_SIGNAL_BRAND_WRITE_TYPE, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, JSACTION_EVENT_CONTRACT as ɵJSACTION_EVENT_CONTRACT, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, PROVIDED_NG_ZONE as ɵPROVIDED_NG_ZONE, PendingTasks as ɵPendingTasks, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, USE_RUNTIME_DEPS_TRACKER_FOR_JIT as ɵUSE_RUNTIME_DEPS_TRACKER_FOR_JIT, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, ZONELESS_ENABLED as ɵZONELESS_ENABLED, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, annotateForHydration as ɵannotateForHydration, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, depsTracker as ɵdepsTracker, detectChangesInViewIfRequired as ɵdetectChangesInViewIfRequired, devModeEqual as ɵdevModeEqual, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn, getDebugNode as ɵgetDebugNode, getDeferBlocks as ɵgetDeferBlocks, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getOutputDestroyRef as ɵgetOutputDestroyRef, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalAfterNextRender as ɵinternalAfterNextRender, internalCreateApplication as ɵinternalCreateApplication, internalProvideZoneChangeDetection as ɵinternalProvideZoneChangeDetection, isBoundToModule as ɵisBoundToModule, isComponentDefPendingResolution as ɵisComponentDefPendingResolution, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, performanceMarkFeature as ɵperformanceMarkFeature, provideGlobalEventDelegation as ɵprovideGlobalEventDelegation, queueStateUpdate as ɵqueueStateUpdate, readHydrationInfo as ɵreadHydrationInfo, registerLocaleData as ɵregisterLocaleData, renderDeferBlockState as ɵrenderDeferBlockState, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, restoreComponentResolutionQueue as ɵrestoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, ɵsetClassDebugInfo, setClassMetadata as ɵsetClassMetadata, setClassMetadataAsync as ɵsetClassMetadataAsync, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setInjectorProfilerContext as ɵsetInjectorProfilerContext, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, triggerResourceLoading as ɵtriggerResourceLoading, truncateMiddle as ɵtruncateMiddle, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵunwrapWritableSignal, whenStable as ɵwhenStable, withDomHydration as ɵwithDomHydration, withEventReplay as ɵwithEventReplay, withI18nSupport as ɵwithI18nSupport, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵInputTransformsFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵStandaloneFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵdeclareLet, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵdeferOnHover, ɵɵdeferOnIdle, ɵɵdeferOnImmediate, ɵɵdeferOnInteraction, ɵɵdeferOnTimer, ɵɵdeferOnViewport, ɵɵdeferPrefetchOnHover, ɵɵdeferPrefetchOnIdle, ɵɵdeferPrefetchOnImmediate, ɵɵdeferPrefetchOnInteraction, ɵɵdeferPrefetchOnTimer, ɵɵdeferPrefetchOnViewport, ɵɵdeferPrefetchWhen, ɵɵdeferWhen, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetComponentDepsFactory, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareClassMetadataAsync, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryAdvance, ɵɵqueryRefresh, ɵɵreadContextLet, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstoreLet, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateIframeAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
38143
38337
  //# sourceMappingURL=core.mjs.map