@angular/core 16.0.0-next.7 → 16.0.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 (45) hide show
  1. package/esm2022/rxjs-interop/src/index.mjs +3 -3
  2. package/esm2022/rxjs-interop/src/to_observable.mjs +39 -0
  3. package/esm2022/rxjs-interop/src/to_signal.mjs +52 -0
  4. package/esm2022/src/application_ref.mjs +3 -3
  5. package/esm2022/src/application_tokens.mjs +11 -1
  6. package/esm2022/src/core_private_export.mjs +2 -1
  7. package/esm2022/src/errors.mjs +1 -1
  8. package/esm2022/src/hydration/annotate.mjs +42 -33
  9. package/esm2022/src/hydration/api.mjs +47 -19
  10. package/esm2022/src/hydration/error_handling.mjs +1 -17
  11. package/esm2022/src/initial_render_pending_tasks.mjs +10 -10
  12. package/esm2022/src/render3/component_ref.mjs +3 -3
  13. package/esm2022/src/render3/di.mjs +3 -3
  14. package/esm2022/src/render3/hooks.mjs +3 -3
  15. package/esm2022/src/render3/instructions/i18n.mjs +14 -2
  16. package/esm2022/src/render3/instructions/mark_view_dirty.mjs +1 -1
  17. package/esm2022/src/render3/instructions/shared.mjs +14 -14
  18. package/esm2022/src/render3/interfaces/type_checks.mjs +1 -1
  19. package/esm2022/src/render3/interfaces/view.mjs +1 -1
  20. package/esm2022/src/render3/node_manipulation.mjs +9 -9
  21. package/esm2022/src/render3/reactivity/effect.mjs +1 -1
  22. package/esm2022/src/render3/util/discovery_utils.mjs +1 -1
  23. package/esm2022/src/render3/util/view_traversal_utils.mjs +1 -1
  24. package/esm2022/src/render3/util/view_utils.mjs +2 -2
  25. package/esm2022/src/render3/view_ref.mjs +4 -4
  26. package/esm2022/src/signals/src/watch.mjs +6 -2
  27. package/esm2022/src/version.mjs +1 -1
  28. package/esm2022/testing/src/logger.mjs +3 -3
  29. package/esm2022/testing/src/ng_zone_mock.mjs +3 -3
  30. package/fesm2022/core.mjs +156 -113
  31. package/fesm2022/core.mjs.map +1 -1
  32. package/fesm2022/rxjs-interop.mjs +704 -56
  33. package/fesm2022/rxjs-interop.mjs.map +1 -1
  34. package/fesm2022/testing.mjs +67 -57
  35. package/fesm2022/testing.mjs.map +1 -1
  36. package/index.d.ts +32 -15
  37. package/package.json +2 -2
  38. package/rxjs-interop/index.d.ts +53 -46
  39. package/schematics/migrations/guard-and-resolve-interfaces/bundle.js +13 -13
  40. package/schematics/migrations/remove-module-id/bundle.js +14 -14
  41. package/schematics/ng-generate/standalone-migration/bundle.js +2938 -1229
  42. package/schematics/ng-generate/standalone-migration/bundle.js.map +4 -4
  43. package/testing/index.d.ts +1 -1
  44. package/esm2022/rxjs-interop/src/from_observable.mjs +0 -46
  45. package/esm2022/rxjs-interop/src/from_signal.mjs +0 -36
package/fesm2022/core.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v16.0.0-next.7
2
+ * @license Angular v16.0.0-rc.0
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -2055,7 +2055,7 @@ function isComponentDef(def) {
2055
2055
  return !!def.template;
2056
2056
  }
2057
2057
  function isRootView(target) {
2058
- return (target[FLAGS] & 256 /* LViewFlags.IsRoot */) !== 0;
2058
+ return (target[FLAGS] & 512 /* LViewFlags.IsRoot */) !== 0;
2059
2059
  }
2060
2060
  function isProjectionTNode(tNode) {
2061
2061
  return (tNode.type & 16 /* TNodeType.Projection */) === 16 /* TNodeType.Projection */;
@@ -2690,6 +2690,9 @@ class Watch extends ReactiveNode {
2690
2690
  this.schedule = schedule;
2691
2691
  this.dirty = false;
2692
2692
  this.cleanupFn = NOOP_CLEANUP_FN;
2693
+ this.registerOnCleanup = (cleanupFn) => {
2694
+ this.cleanupFn = cleanupFn;
2695
+ };
2693
2696
  this.consumerAllowSignalWrites = allowSignalWrites;
2694
2697
  }
2695
2698
  notify() {
@@ -2719,7 +2722,8 @@ class Watch extends ReactiveNode {
2719
2722
  this.trackingVersion++;
2720
2723
  try {
2721
2724
  this.cleanupFn();
2722
- this.cleanupFn = this.watch() ?? NOOP_CLEANUP_FN;
2725
+ this.cleanupFn = NOOP_CLEANUP_FN;
2726
+ this.watch(this.registerOnCleanup);
2723
2727
  }
2724
2728
  finally {
2725
2729
  setActiveConsumer(prevConsumer);
@@ -2980,7 +2984,7 @@ function isCreationMode(view) {
2980
2984
  * into a container. For that, you'll want `viewAttachedToContainer` below.
2981
2985
  */
2982
2986
  function viewAttachedToChangeDetector(view) {
2983
- return (view[FLAGS] & 64 /* LViewFlags.Attached */) === 64 /* LViewFlags.Attached */;
2987
+ return (view[FLAGS] & 128 /* LViewFlags.Attached */) === 128 /* LViewFlags.Attached */;
2984
2988
  }
2985
2989
  /** Returns a boolean for whether the view is attached to a container. */
2986
2990
  function viewAttachedToContainer(view) {
@@ -3720,7 +3724,7 @@ function incrementInitPhaseFlags(lView, initPhase) {
3720
3724
  assertNotEqual(initPhase, 3 /* InitPhaseState.InitPhaseCompleted */, 'Init hooks phase should not be incremented after all init hooks have been run.');
3721
3725
  let flags = lView[FLAGS];
3722
3726
  if ((flags & 3 /* LViewFlags.InitPhaseStateMask */) === initPhase) {
3723
- flags &= 2047 /* LViewFlags.IndexWithinInitPhaseReset */;
3727
+ flags &= 4095 /* LViewFlags.IndexWithinInitPhaseReset */;
3724
3728
  flags += 1 /* LViewFlags.InitPhaseStateIncrementer */;
3725
3729
  lView[FLAGS] = flags;
3726
3730
  }
@@ -3801,12 +3805,12 @@ function callHook(currentView, initPhase, arr, i) {
3801
3805
  const directiveIndex = isInitHook ? -arr[i] : arr[i];
3802
3806
  const directive = currentView[directiveIndex];
3803
3807
  if (isInitHook) {
3804
- const indexWithintInitPhase = currentView[FLAGS] >> 11 /* LViewFlags.IndexWithinInitPhaseShift */;
3808
+ const indexWithintInitPhase = currentView[FLAGS] >> 12 /* LViewFlags.IndexWithinInitPhaseShift */;
3805
3809
  // The init phase state must be always checked here as it may have been recursively updated.
3806
3810
  if (indexWithintInitPhase <
3807
3811
  (currentView[PREORDER_HOOK_FLAGS] >> 16 /* PreOrderHookFlags.NumberOfInitHooksCalledShift */) &&
3808
3812
  (currentView[FLAGS] & 3 /* LViewFlags.InitPhaseStateMask */) === initPhase) {
3809
- currentView[FLAGS] += 2048 /* LViewFlags.IndexWithinInitPhaseIncrementer */;
3813
+ currentView[FLAGS] += 4096 /* LViewFlags.IndexWithinInitPhaseIncrementer */;
3810
3814
  callHookInternal(directive, hook);
3811
3815
  }
3812
3816
  }
@@ -4396,7 +4400,7 @@ function getOrCreateInjectable(tNode, lView, token, flags = InjectFlags.Default,
4396
4400
  if (tNode !== null) {
4397
4401
  // If the view or any of its ancestors have an embedded
4398
4402
  // view injector, we have to look it up there first.
4399
- if (lView[FLAGS] & 1024 /* LViewFlags.HasEmbeddedViewInjector */) {
4403
+ if (lView[FLAGS] & 2048 /* LViewFlags.HasEmbeddedViewInjector */) {
4400
4404
  const embeddedInjectorValue = lookupTokenUsingEmbeddedInjector(tNode, lView, token, flags, NOT_FOUND);
4401
4405
  if (embeddedInjectorValue !== NOT_FOUND) {
4402
4406
  return embeddedInjectorValue;
@@ -4739,8 +4743,8 @@ function lookupTokenUsingEmbeddedInjector(tNode, lView, token, flags, notFoundVa
4739
4743
  // hierarchy when resolving the value is to walk it node-by-node while attempting to resolve
4740
4744
  // the token at each level.
4741
4745
  while (currentTNode !== null && currentLView !== null &&
4742
- (currentLView[FLAGS] & 1024 /* LViewFlags.HasEmbeddedViewInjector */) &&
4743
- !(currentLView[FLAGS] & 256 /* LViewFlags.IsRoot */)) {
4746
+ (currentLView[FLAGS] & 2048 /* LViewFlags.HasEmbeddedViewInjector */) &&
4747
+ !(currentLView[FLAGS] & 512 /* LViewFlags.IsRoot */)) {
4744
4748
  ngDevMode && assertTNodeForLView(currentTNode, currentLView);
4745
4749
  // Note that this lookup on the node injector is using the `Self` flag, because
4746
4750
  // we don't want the node injector to look at any parent injectors since we
@@ -6571,7 +6575,7 @@ function getLViewParent(lView) {
6571
6575
  function getRootView(componentOrLView) {
6572
6576
  ngDevMode && assertDefined(componentOrLView, 'component');
6573
6577
  let lView = isLView(componentOrLView) ? componentOrLView : readPatchedLView(componentOrLView);
6574
- while (lView && !(lView[FLAGS] & 256 /* LViewFlags.IsRoot */)) {
6578
+ while (lView && !(lView[FLAGS] & 512 /* LViewFlags.IsRoot */)) {
6575
6579
  lView = getLViewParent(lView);
6576
6580
  }
6577
6581
  ngDevMode && assertLView(lView);
@@ -6817,7 +6821,7 @@ function insertView(tView, lView, lContainer, index) {
6817
6821
  lQueries.insertView(tView);
6818
6822
  }
6819
6823
  // Sets the attached flag
6820
- lView[FLAGS] |= 64 /* LViewFlags.Attached */;
6824
+ lView[FLAGS] |= 128 /* LViewFlags.Attached */;
6821
6825
  }
6822
6826
  /**
6823
6827
  * Track views created from the declaration container (TemplateRef) and inserted into a
@@ -6857,8 +6861,8 @@ function detachMovedView(declarationContainer, lView) {
6857
6861
  // If the view was marked for refresh but then detached before it was checked (where the flag
6858
6862
  // would be cleared and the counter decremented), we need to decrement the view counter here
6859
6863
  // instead.
6860
- if (lView[FLAGS] & 512 /* LViewFlags.RefreshTransplantedView */) {
6861
- lView[FLAGS] &= ~512 /* LViewFlags.RefreshTransplantedView */;
6864
+ if (lView[FLAGS] & 1024 /* LViewFlags.RefreshTransplantedView */) {
6865
+ lView[FLAGS] &= ~1024 /* LViewFlags.RefreshTransplantedView */;
6862
6866
  updateTransplantedViewCount(insertionLContainer, -1);
6863
6867
  }
6864
6868
  movedViews.splice(declarationViewIndex, 1);
@@ -6896,7 +6900,7 @@ function detachView(lContainer, removeIndex) {
6896
6900
  viewToDetach[PARENT] = null;
6897
6901
  viewToDetach[NEXT] = null;
6898
6902
  // Unsets the attached flag
6899
- viewToDetach[FLAGS] &= ~64 /* LViewFlags.Attached */;
6903
+ viewToDetach[FLAGS] &= ~128 /* LViewFlags.Attached */;
6900
6904
  }
6901
6905
  return viewToDetach;
6902
6906
  }
@@ -6908,7 +6912,7 @@ function detachView(lContainer, removeIndex) {
6908
6912
  * @param lView The view to be destroyed.
6909
6913
  */
6910
6914
  function destroyLView(tView, lView) {
6911
- if (!(lView[FLAGS] & 128 /* LViewFlags.Destroyed */)) {
6915
+ if (!(lView[FLAGS] & 256 /* LViewFlags.Destroyed */)) {
6912
6916
  const renderer = lView[RENDERER];
6913
6917
  lView[REACTIVE_TEMPLATE_CONSUMER]?.destroy();
6914
6918
  lView[REACTIVE_HOST_BINDING_CONSUMER]?.destroy();
@@ -6927,16 +6931,16 @@ function destroyLView(tView, lView) {
6927
6931
  * @param lView The LView to clean up
6928
6932
  */
6929
6933
  function cleanUpView(tView, lView) {
6930
- if (!(lView[FLAGS] & 128 /* LViewFlags.Destroyed */)) {
6934
+ if (!(lView[FLAGS] & 256 /* LViewFlags.Destroyed */)) {
6931
6935
  // Usually the Attached flag is removed when the view is detached from its parent, however
6932
6936
  // if it's a root view, the flag won't be unset hence why we're also removing on destroy.
6933
- lView[FLAGS] &= ~64 /* LViewFlags.Attached */;
6937
+ lView[FLAGS] &= ~128 /* LViewFlags.Attached */;
6934
6938
  // Mark the LView as destroyed *before* executing the onDestroy hooks. An onDestroy hook
6935
6939
  // runs arbitrary user code, which could include its own `viewRef.destroy()` (or similar). If
6936
6940
  // We don't flag the view as destroyed before the hooks, this could lead to an infinite loop.
6937
6941
  // This also aligns with the ViewEngine behavior. It also means that the onDestroy hook is
6938
6942
  // really more of an "afterDestroy" hook if you think about it.
6939
- lView[FLAGS] |= 128 /* LViewFlags.Destroyed */;
6943
+ lView[FLAGS] |= 256 /* LViewFlags.Destroyed */;
6940
6944
  executeOnDestroys(tView, lView);
6941
6945
  processCleanups(tView, lView);
6942
6946
  // For component views only, the local renderer is destroyed at clean up time.
@@ -9401,6 +9405,16 @@ const CSP_NONCE = new InjectionToken('CSP nonce', {
9401
9405
  return getDocument().body.querySelector('[ngCspNonce]')?.getAttribute('ngCspNonce') || null;
9402
9406
  },
9403
9407
  });
9408
+ /**
9409
+ * Internal token to collect all SSR-related features enabled for this application.
9410
+ *
9411
+ * Note: the token is in `core` to let other packages register features (the `core`
9412
+ * package is imported in other packages).
9413
+ */
9414
+ const ENABLED_SSR_FEATURES = new InjectionToken((typeof ngDevMode === 'undefined' || ngDevMode) ? 'ENABLED_SSR_FEATURES' : '', {
9415
+ providedIn: 'root',
9416
+ factory: () => new Set(),
9417
+ });
9404
9418
 
9405
9419
  function escapeTransferStateContent(text) {
9406
9420
  const escapedText = {
@@ -9954,7 +9968,7 @@ class Version {
9954
9968
  /**
9955
9969
  * @publicApi
9956
9970
  */
9957
- const VERSION = new Version('16.0.0-next.7');
9971
+ const VERSION = new Version('16.0.0-rc.0');
9958
9972
 
9959
9973
  // This default value is when checking the hierarchy for a token.
9960
9974
  //
@@ -9988,7 +10002,7 @@ const NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR = {};
9988
10002
  */
9989
10003
  function markViewDirty(lView) {
9990
10004
  while (lView) {
9991
- lView[FLAGS] |= 32 /* LViewFlags.Dirty */;
10005
+ lView[FLAGS] |= 64 /* LViewFlags.Dirty */;
9992
10006
  const parent = getLViewParent(lView);
9993
10007
  // Stop traversing up as soon as you find a root view that wasn't attached to any container
9994
10008
  if (isRootView(lView) && !parent) {
@@ -10740,10 +10754,10 @@ function renderChildComponents(hostLView, components) {
10740
10754
  function createLView(parentLView, tView, context, flags, host, tHostNode, environment, renderer, injector, embeddedViewInjector, hydrationInfo) {
10741
10755
  const lView = tView.blueprint.slice();
10742
10756
  lView[HOST] = host;
10743
- lView[FLAGS] = flags | 4 /* LViewFlags.CreationMode */ | 64 /* LViewFlags.Attached */ | 8 /* LViewFlags.FirstLViewPass */;
10757
+ lView[FLAGS] = flags | 4 /* LViewFlags.CreationMode */ | 128 /* LViewFlags.Attached */ | 8 /* LViewFlags.FirstLViewPass */;
10744
10758
  if (embeddedViewInjector !== null ||
10745
- (parentLView && (parentLView[FLAGS] & 1024 /* LViewFlags.HasEmbeddedViewInjector */))) {
10746
- lView[FLAGS] |= 1024 /* LViewFlags.HasEmbeddedViewInjector */;
10759
+ (parentLView && (parentLView[FLAGS] & 2048 /* LViewFlags.HasEmbeddedViewInjector */))) {
10760
+ lView[FLAGS] |= 2048 /* LViewFlags.HasEmbeddedViewInjector */;
10747
10761
  }
10748
10762
  resetPreOrderHookFlags(lView);
10749
10763
  ngDevMode && tView.declTNode && parentLView && assertTNodeForLView(tView.declTNode, parentLView);
@@ -10929,7 +10943,7 @@ function renderView(tView, lView, context) {
10929
10943
  function refreshView(tView, lView, templateFn, context) {
10930
10944
  ngDevMode && assertEqual(isCreationMode(lView), false, 'Should be run in update mode');
10931
10945
  const flags = lView[FLAGS];
10932
- if ((flags & 128 /* LViewFlags.Destroyed */) === 128 /* LViewFlags.Destroyed */)
10946
+ if ((flags & 256 /* LViewFlags.Destroyed */) === 256 /* LViewFlags.Destroyed */)
10933
10947
  return;
10934
10948
  // Check no changes mode is a dev only mode used to verify that bindings have not changed
10935
10949
  // since they were assigned. We do not want to execute lifecycle hooks in that mode.
@@ -11032,10 +11046,10 @@ function refreshView(tView, lView, templateFn, context) {
11032
11046
  // no changes cycle, the component would be not be dirty for the next update pass. This would
11033
11047
  // be different in production mode where the component dirty state is not reset.
11034
11048
  if (!isInCheckNoChangesPass) {
11035
- lView[FLAGS] &= ~(32 /* LViewFlags.Dirty */ | 8 /* LViewFlags.FirstLViewPass */);
11049
+ lView[FLAGS] &= ~(64 /* LViewFlags.Dirty */ | 8 /* LViewFlags.FirstLViewPass */);
11036
11050
  }
11037
- if (lView[FLAGS] & 512 /* LViewFlags.RefreshTransplantedView */) {
11038
- lView[FLAGS] &= ~512 /* LViewFlags.RefreshTransplantedView */;
11051
+ if (lView[FLAGS] & 1024 /* LViewFlags.RefreshTransplantedView */) {
11052
+ lView[FLAGS] &= ~1024 /* LViewFlags.RefreshTransplantedView */;
11039
11053
  updateTransplantedViewCount(lView[PARENT], -1);
11040
11054
  }
11041
11055
  }
@@ -11487,7 +11501,7 @@ function markDirtyIfOnPush(lView, viewIndex) {
11487
11501
  ngDevMode && assertLView(lView);
11488
11502
  const childComponentLView = getComponentLViewByIndex(viewIndex, lView);
11489
11503
  if (!(childComponentLView[FLAGS] & 16 /* LViewFlags.CheckAlways */)) {
11490
- childComponentLView[FLAGS] |= 32 /* LViewFlags.Dirty */;
11504
+ childComponentLView[FLAGS] |= 64 /* LViewFlags.Dirty */;
11491
11505
  }
11492
11506
  }
11493
11507
  function setNgReflectProperty(lView, element, type, attrName, value) {
@@ -11860,7 +11874,7 @@ function addComponentLogic(lView, hostTNode, def) {
11860
11874
  // Only component views should be added to the view tree directly. Embedded views are
11861
11875
  // accessed through their containers because they may be removed / re-added later.
11862
11876
  const rendererFactory = lView[ENVIRONMENT].rendererFactory;
11863
- const componentView = addToViewTree(lView, createLView(lView, tView, null, def.onPush ? 32 /* LViewFlags.Dirty */ : 16 /* LViewFlags.CheckAlways */, native, hostTNode, null, rendererFactory.createRenderer(native, def), null, null, null));
11877
+ const componentView = addToViewTree(lView, createLView(lView, tView, null, def.onPush ? 64 /* LViewFlags.Dirty */ : 16 /* LViewFlags.CheckAlways */, native, hostTNode, null, rendererFactory.createRenderer(native, def), null, null, null));
11864
11878
  // Component view will always be created before any injected LContainers,
11865
11879
  // so this is a regular element, wrap it with the component view
11866
11880
  lView[hostTNode.index] = componentView;
@@ -12033,14 +12047,14 @@ function markTransplantedViewsForRefresh(lView) {
12033
12047
  ngDevMode && assertLContainer(insertionLContainer);
12034
12048
  // We don't want to increment the counter if the moved LView was already marked for
12035
12049
  // refresh.
12036
- if ((movedLView[FLAGS] & 512 /* LViewFlags.RefreshTransplantedView */) === 0) {
12050
+ if ((movedLView[FLAGS] & 1024 /* LViewFlags.RefreshTransplantedView */) === 0) {
12037
12051
  updateTransplantedViewCount(insertionLContainer, 1);
12038
12052
  }
12039
12053
  // Note, it is possible that the `movedViews` is tracking views that are transplanted *and*
12040
12054
  // those that aren't (declaration component === insertion component). In the latter case,
12041
12055
  // it's fine to add the flag, as we will clear it immediately in
12042
12056
  // `refreshEmbeddedViews` for the view currently being refreshed.
12043
- movedLView[FLAGS] |= 512 /* LViewFlags.RefreshTransplantedView */;
12057
+ movedLView[FLAGS] |= 1024 /* LViewFlags.RefreshTransplantedView */;
12044
12058
  }
12045
12059
  }
12046
12060
  }
@@ -12056,7 +12070,7 @@ function refreshComponent(hostLView, componentHostIdx) {
12056
12070
  // Only attached components that are CheckAlways or OnPush and dirty should be refreshed
12057
12071
  if (viewAttachedToChangeDetector(componentView)) {
12058
12072
  const tView = componentView[TVIEW];
12059
- if (componentView[FLAGS] & (16 /* LViewFlags.CheckAlways */ | 32 /* LViewFlags.Dirty */)) {
12073
+ if (componentView[FLAGS] & (16 /* LViewFlags.CheckAlways */ | 64 /* LViewFlags.Dirty */)) {
12060
12074
  refreshView(tView, componentView, tView.template, componentView[CONTEXT]);
12061
12075
  }
12062
12076
  else if (componentView[TRANSPLANTED_VIEWS_TO_REFRESH] > 0) {
@@ -12076,7 +12090,7 @@ function refreshContainsDirtyView(lView) {
12076
12090
  for (let i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) {
12077
12091
  const embeddedLView = lContainer[i];
12078
12092
  if (viewAttachedToChangeDetector(embeddedLView)) {
12079
- if (embeddedLView[FLAGS] & 512 /* LViewFlags.RefreshTransplantedView */) {
12093
+ if (embeddedLView[FLAGS] & 1024 /* LViewFlags.RefreshTransplantedView */) {
12080
12094
  const embeddedTView = embeddedLView[TVIEW];
12081
12095
  ngDevMode && assertDefined(embeddedTView, 'TView must be allocated');
12082
12096
  refreshView(embeddedTView, embeddedLView, embeddedTView.template, embeddedLView[CONTEXT]);
@@ -12537,7 +12551,7 @@ class ViewRef$1 {
12537
12551
  this._lView[CONTEXT] = value;
12538
12552
  }
12539
12553
  get destroyed() {
12540
- return (this._lView[FLAGS] & 128 /* LViewFlags.Destroyed */) === 128 /* LViewFlags.Destroyed */;
12554
+ return (this._lView[FLAGS] & 256 /* LViewFlags.Destroyed */) === 256 /* LViewFlags.Destroyed */;
12541
12555
  }
12542
12556
  destroy() {
12543
12557
  if (this._appRef) {
@@ -12650,7 +12664,7 @@ class ViewRef$1 {
12650
12664
  * ```
12651
12665
  */
12652
12666
  detach() {
12653
- this._lView[FLAGS] &= ~64 /* LViewFlags.Attached */;
12667
+ this._lView[FLAGS] &= ~128 /* LViewFlags.Attached */;
12654
12668
  }
12655
12669
  /**
12656
12670
  * Re-attaches a view to the change detection tree.
@@ -12709,7 +12723,7 @@ class ViewRef$1 {
12709
12723
  * ```
12710
12724
  */
12711
12725
  reattach() {
12712
- this._lView[FLAGS] |= 64 /* LViewFlags.Attached */;
12726
+ this._lView[FLAGS] |= 128 /* LViewFlags.Attached */;
12713
12727
  }
12714
12728
  /**
12715
12729
  * Checks the view and its children.
@@ -12895,8 +12909,8 @@ class ComponentFactory extends ComponentFactory$1 {
12895
12909
  const hostRNode = rootSelectorOrNode ?
12896
12910
  locateHostElement(hostRenderer, rootSelectorOrNode, this.componentDef.encapsulation, rootViewInjector) :
12897
12911
  createElementNode(hostRenderer, elementName, getNamespace(elementName));
12898
- const rootFlags = this.componentDef.onPush ? 32 /* LViewFlags.Dirty */ | 256 /* LViewFlags.IsRoot */ :
12899
- 16 /* LViewFlags.CheckAlways */ | 256 /* LViewFlags.IsRoot */;
12912
+ const rootFlags = this.componentDef.onPush ? 64 /* LViewFlags.Dirty */ | 512 /* LViewFlags.IsRoot */ :
12913
+ 16 /* LViewFlags.CheckAlways */ | 512 /* LViewFlags.IsRoot */;
12900
12914
  // Create the root view. Uses empty TView and ContentTemplate.
12901
12915
  const rootTView = createTView(0 /* TViewType.Root */, null, null, 1, 0, null, null, null, null, null, null);
12902
12916
  const rootLView = createLView(null, rootTView, null, rootFlags, null, null, environment, hostRenderer, rootViewInjector, null, null);
@@ -13039,7 +13053,7 @@ function createRootComponentView(tNode, hostRNode, rootComponentDef, rootDirecti
13039
13053
  hydrationInfo = retrieveHydrationInfo(hostRNode, rootView[INJECTOR$1]);
13040
13054
  }
13041
13055
  const viewRenderer = environment.rendererFactory.createRenderer(hostRNode, rootComponentDef);
13042
- const componentView = createLView(rootView, getOrCreateComponentTView(rootComponentDef), null, rootComponentDef.onPush ? 32 /* LViewFlags.Dirty */ : 16 /* LViewFlags.CheckAlways */, rootView[tNode.index], tNode, environment, viewRenderer, null, null, hydrationInfo);
13056
+ const componentView = createLView(rootView, getOrCreateComponentTView(rootComponentDef), null, rootComponentDef.onPush ? 64 /* LViewFlags.Dirty */ : 16 /* LViewFlags.CheckAlways */, rootView[tNode.index], tNode, environment, viewRenderer, null, null, hydrationInfo);
13043
13057
  if (tView.firstCreatePass) {
13044
13058
  markAsComponentHost(tView, tNode, rootDirectives.length - 1);
13045
13059
  }
@@ -14329,22 +14343,6 @@ function invalidSkipHydrationHost(rNode) {
14329
14343
  const message = header + actual + footer;
14330
14344
  return new RuntimeError(-504 /* RuntimeErrorCode.INVALID_SKIP_HYDRATION_HOST */, message);
14331
14345
  }
14332
- /**
14333
- * Builds the hydration error message in the case that a user is attempting to enable
14334
- * hydration on internationalized nodes, which is not yet supported.
14335
- *
14336
- * @param rNode the HTML Element
14337
- * @returns an error
14338
- */
14339
- function notYetSupportedI18nBlockError(rNode) {
14340
- const header = 'Hydration for nodes marked with `i18n` is not yet supported. ' +
14341
- 'You can opt-out a component that uses `i18n` in a template using ' +
14342
- 'the `ngSkipHydration` attribute or fall back to the previous ' +
14343
- 'hydration logic (which re-creates the application structure).\n\n';
14344
- const actual = `${describeDomFromNode(rNode)}\n\n`;
14345
- const message = header + actual;
14346
- return new RuntimeError(518 /* RuntimeErrorCode.HYDRATION_I18N_NOT_YET_SUPPORTED */, message);
14347
- }
14348
14346
  // Stringification methods
14349
14347
  /**
14350
14348
  * Stringifies a given TNode's attributes
@@ -20933,6 +20931,18 @@ function ɵɵi18nStart(index, messageIndex, subTemplateIndex = -1) {
20933
20931
  if (tView.firstCreatePass) {
20934
20932
  i18nStartFirstCreatePass(tView, parentTNode === null ? 0 : parentTNode.index, lView, adjustedIndex, message, subTemplateIndex);
20935
20933
  }
20934
+ // Set a flag that this LView has i18n blocks.
20935
+ // The flag is later used to determine whether this component should
20936
+ // be hydrated (currently hydration is not supported for i18n blocks).
20937
+ if (tView.type === 2 /* TViewType.Embedded */) {
20938
+ // Annotate host component's LView (not embedded view's LView),
20939
+ // since hydration can be skipped on per-component basis only.
20940
+ const componentLView = lView[DECLARATION_COMPONENT_VIEW];
20941
+ componentLView[FLAGS] |= 32 /* LViewFlags.HasI18n */;
20942
+ }
20943
+ else {
20944
+ lView[FLAGS] |= 32 /* LViewFlags.HasI18n */;
20945
+ }
20936
20946
  const tI18n = tView.data[adjustedIndex];
20937
20947
  const sameViewParentTNode = parentTNode === lView[T_HOST] ? null : parentTNode;
20938
20948
  const parentRNode = getClosestRElement(tView, sameViewParentTNode, lView);
@@ -21630,7 +21640,7 @@ function getOwningComponent(elementOrDir) {
21630
21640
  while (lView[TVIEW].type === 2 /* TViewType.Embedded */ && (parent = getLViewParent(lView))) {
21631
21641
  lView = parent;
21632
21642
  }
21633
- return lView[FLAGS] & 256 /* LViewFlags.IsRoot */ ? null : lView[CONTEXT];
21643
+ return lView[FLAGS] & 512 /* LViewFlags.IsRoot */ ? null : lView[CONTEXT];
21634
21644
  }
21635
21645
  /**
21636
21646
  * Retrieves all root components associated with a DOM element, directive or component instance.
@@ -27078,7 +27088,7 @@ class ApplicationRef {
27078
27088
  this._loadComponent(compRef);
27079
27089
  if (typeof ngDevMode === 'undefined' || ngDevMode) {
27080
27090
  const _console = this._injector.get(Console);
27081
- _console.log(`Angular is running in development mode. Call enableProdMode() to enable production mode.`);
27091
+ _console.log(`Angular is running in development mode.`);
27082
27092
  }
27083
27093
  return compRef;
27084
27094
  }
@@ -29272,11 +29282,14 @@ function annotateForHydration(appRef, doc) {
29272
29282
  }
29273
29283
  }
29274
29284
  }
29275
- const allSerializedViews = serializedViewCollection.getAll();
29276
- if (allSerializedViews.length > 0) {
29277
- const transferState = appRef.injector.get(TransferState);
29278
- transferState.set(NGH_DATA_KEY, allSerializedViews);
29279
- }
29285
+ // Note: we *always* include hydration info key and a corresponding value
29286
+ // into the TransferState, even if the list of serialized views is empty.
29287
+ // This is needed as a signal to the client that the server part of the
29288
+ // hydration logic was setup and enabled correctly. Otherwise, if a client
29289
+ // hydration doesn't find a key in the transfer state - an error is produced.
29290
+ const serializedViews = serializedViewCollection.getAll();
29291
+ const transferState = appRef.injector.get(TransferState);
29292
+ transferState.set(NGH_DATA_KEY, serializedViews);
29280
29293
  }
29281
29294
  /**
29282
29295
  * Serializes the lContainer data into a list of SerializedView objects,
@@ -29353,15 +29366,6 @@ function appendDisconnectedNodeIndex(ngh, tNode) {
29353
29366
  ngh[DISCONNECTED_NODES].push(noOffsetIndex);
29354
29367
  }
29355
29368
  }
29356
- /**
29357
- * There is no special TNode type for an i18n block, so we verify
29358
- * whether the structure that we store at the `TView.data[idx]` position
29359
- * has the `TI18n` shape.
29360
- */
29361
- function isTI18nNode(obj) {
29362
- const tI18n = obj;
29363
- return tI18n.hasOwnProperty('create') && tI18n.hasOwnProperty('update');
29364
- }
29365
29369
  /**
29366
29370
  * Serializes the lView data into a SerializedView object that will later be added
29367
29371
  * to the TransferState storage and referenced using the `ngh` attribute on a host
@@ -29462,18 +29466,6 @@ function serializeLView(lView, context) {
29462
29466
  annotateHostElementForHydration(targetNode, lView[i], context);
29463
29467
  }
29464
29468
  }
29465
- else if (isTI18nNode(tNode)) {
29466
- // Hydration for i18n nodes is not *yet* supported.
29467
- // Produce an error message which would also describe possible
29468
- // solutions (switching back to the "destructive" hydration or
29469
- // excluding a component from hydration via `ngSkipHydration`).
29470
- //
29471
- // TODO(akushnir): we should find a better way to get a hold of the node that has the `i18n`
29472
- // attribute on it. For now, we either refer to the host element of the component or to the
29473
- // previous element in the LView.
29474
- const targetNode = (i === HEADER_OFFSET) ? lView[HOST] : unwrapRNode(lView[i - 1]);
29475
- throw notYetSupportedI18nBlockError(targetNode);
29476
- }
29477
29469
  else {
29478
29470
  // <ng-container> case
29479
29471
  if (tNode.type & 8 /* TNodeType.ElementContainer */) {
@@ -29546,17 +29538,42 @@ function serializeLView(lView, context) {
29546
29538
  return ngh;
29547
29539
  }
29548
29540
  /**
29549
- * Physically adds the `ngh` attribute and serialized data to the host element.
29541
+ * Determines whether a component instance that is represented
29542
+ * by a given LView uses `ViewEncapsulation.ShadowDom`.
29543
+ */
29544
+ function componentUsesShadowDomEncapsulation(lView) {
29545
+ const instance = lView[CONTEXT];
29546
+ return instance?.constructor ?
29547
+ getComponentDef(instance.constructor)?.encapsulation === ViewEncapsulation$1.ShadowDom :
29548
+ false;
29549
+ }
29550
+ /**
29551
+ * Annotates component host element for hydration:
29552
+ * - by either adding the `ngh` attribute and collecting hydration-related info
29553
+ * for the serialization and transferring to the client
29554
+ * - or by adding the `ngSkipHydration` attribute in case Angular detects that
29555
+ * component contents is not compatible with hydration.
29550
29556
  *
29551
29557
  * @param element The Host element to be annotated
29552
29558
  * @param lView The associated LView
29553
29559
  * @param context The hydration context
29554
29560
  */
29555
29561
  function annotateHostElementForHydration(element, lView, context) {
29556
- const ngh = serializeLView(lView, context);
29557
- const index = context.serializedViewCollection.add(ngh);
29558
29562
  const renderer = lView[RENDERER];
29559
- renderer.setAttribute(element, NGH_ATTR_NAME, index.toString());
29563
+ if ((lView[FLAGS] & 32 /* LViewFlags.HasI18n */) === 32 /* LViewFlags.HasI18n */ ||
29564
+ componentUsesShadowDomEncapsulation(lView)) {
29565
+ // Attach the skip hydration attribute if this component:
29566
+ // - either has i18n blocks, since hydrating such blocks is not yet supported
29567
+ // - or uses ShadowDom view encapsulation, since Domino doesn't support
29568
+ // shadow DOM, so we can not guarantee that client and server representations
29569
+ // would exactly match
29570
+ renderer.setAttribute(element, SKIP_HYDRATION_ATTR_NAME, '');
29571
+ }
29572
+ else {
29573
+ const ngh = serializeLView(lView, context);
29574
+ const index = context.serializedViewCollection.add(ngh);
29575
+ renderer.setAttribute(element, NGH_ATTR_NAME, index.toString());
29576
+ }
29560
29577
  }
29561
29578
  /**
29562
29579
  * Physically inserts the comment nodes to ensure empty text nodes and adjacent
@@ -29611,12 +29628,10 @@ function isDisconnectedNode(tNode, lView) {
29611
29628
  */
29612
29629
  class InitialRenderPendingTasks {
29613
29630
  get whenAllTasksComplete() {
29614
- if (this.collection.size > 0) {
29615
- return this.promise;
29631
+ if (this.collection.size === 0) {
29632
+ this.complete();
29616
29633
  }
29617
- return Promise.resolve().then(() => {
29618
- this.completed = true;
29619
- });
29634
+ return this.promise;
29620
29635
  }
29621
29636
  constructor() {
29622
29637
  this.taskId = 0;
@@ -29646,15 +29661,17 @@ class InitialRenderPendingTasks {
29646
29661
  return;
29647
29662
  this.collection.delete(taskId);
29648
29663
  if (this.collection.size === 0) {
29649
- // We've removed the last task, resolve the promise.
29650
- this.completed = true;
29651
- this.resolve();
29664
+ this.complete();
29652
29665
  }
29653
29666
  }
29654
29667
  ngOnDestroy() {
29655
- this.completed = true;
29668
+ this.complete();
29656
29669
  this.collection.clear();
29657
29670
  }
29671
+ complete() {
29672
+ this.completed = true;
29673
+ this.resolve();
29674
+ }
29658
29675
  static { this.ɵfac = function InitialRenderPendingTasks_Factory(t) { return new (t || InitialRenderPendingTasks)(); }; }
29659
29676
  static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: InitialRenderPendingTasks, factory: InitialRenderPendingTasks.ɵfac, providedIn: 'root' }); }
29660
29677
  }
@@ -29670,7 +29687,7 @@ class InitialRenderPendingTasks {
29670
29687
  let isHydrationSupportEnabled = false;
29671
29688
  /**
29672
29689
  * Brings the necessary hydration code in tree-shakable manner.
29673
- * The code is only present when the `provideHydrationSupport` is
29690
+ * The code is only present when the `provideClientHydration` is
29674
29691
  * invoked. Otherwise, this code is tree-shaken away during the
29675
29692
  * build optimization step.
29676
29693
  *
@@ -29703,12 +29720,13 @@ function isBrowser() {
29703
29720
  /**
29704
29721
  * Outputs a message with hydration stats into a console.
29705
29722
  */
29706
- function printHydrationStats(console) {
29723
+ function printHydrationStats(injector) {
29724
+ const console = injector.get(Console);
29707
29725
  const message = `Angular hydrated ${ngDevMode.hydratedComponents} component(s) ` +
29708
29726
  `and ${ngDevMode.hydratedNodes} node(s), ` +
29709
29727
  `${ngDevMode.componentsSkippedHydration} component(s) were skipped. ` +
29710
29728
  `Note: this feature is in Developer Preview mode. ` +
29711
- `Learn more at https://angular.io/guides/hydration.`;
29729
+ `Learn more at https://next.angular.io/guide/hydration.`;
29712
29730
  // tslint:disable-next-line:no-console
29713
29731
  console.log(message);
29714
29732
  }
@@ -29732,6 +29750,32 @@ function whenStable(appRef, pendingTasks) {
29732
29750
  */
29733
29751
  function withDomHydration() {
29734
29752
  return makeEnvironmentProviders([
29753
+ {
29754
+ provide: IS_HYDRATION_FEATURE_ENABLED,
29755
+ useFactory: () => {
29756
+ let isEnabled = true;
29757
+ if (isBrowser()) {
29758
+ // On the client, verify that the server response contains
29759
+ // hydration annotations. Otherwise, keep hydration disabled.
29760
+ const transferState = inject(TransferState, { optional: true });
29761
+ isEnabled = !!transferState?.get(NGH_DATA_KEY, null);
29762
+ if (!isEnabled) {
29763
+ const console = inject(Console);
29764
+ const message = formatRuntimeError(-505 /* RuntimeErrorCode.MISSING_HYDRATION_ANNOTATIONS */, 'Angular hydration was requested on the client, but there was no ' +
29765
+ 'serialized information present in the server response, ' +
29766
+ 'thus hydration was not enabled. ' +
29767
+ 'Make sure the `provideClientHydration()` is included into the list ' +
29768
+ 'of providers in the server part of the application configuration.');
29769
+ // tslint:disable-next-line:no-console
29770
+ console.warn(message);
29771
+ }
29772
+ }
29773
+ if (isEnabled) {
29774
+ inject(ENABLED_SSR_FEATURES).add('hydration');
29775
+ }
29776
+ return isEnabled;
29777
+ },
29778
+ },
29735
29779
  {
29736
29780
  provide: ENVIRONMENT_INITIALIZER,
29737
29781
  useValue: () => {
@@ -29740,30 +29784,29 @@ function withDomHydration() {
29740
29784
  // on the client. Moving forward, the `isBrowser` check should
29741
29785
  // be replaced with a tree-shakable alternative (e.g. `isServer`
29742
29786
  // flag).
29743
- if (isBrowser()) {
29787
+ if (isBrowser() && inject(IS_HYDRATION_FEATURE_ENABLED)) {
29744
29788
  enableHydrationRuntimeSupport();
29745
29789
  }
29746
29790
  },
29747
29791
  multi: true,
29748
29792
  },
29749
- {
29750
- provide: IS_HYDRATION_FEATURE_ENABLED,
29751
- useValue: true,
29752
- },
29753
29793
  {
29754
29794
  provide: PRESERVE_HOST_CONTENT,
29755
- // Preserve host element content only in a browser
29756
- // environment. On a server, an application is rendered
29757
- // from scratch, so the host content needs to be empty.
29758
- useFactory: () => isBrowser(),
29795
+ useFactory: () => {
29796
+ // Preserve host element content only in a browser
29797
+ // environment and when hydration is configured properly.
29798
+ // On a server, an application is rendered from scratch,
29799
+ // so the host content needs to be empty.
29800
+ return isBrowser() && inject(IS_HYDRATION_FEATURE_ENABLED);
29801
+ }
29759
29802
  },
29760
29803
  {
29761
29804
  provide: APP_BOOTSTRAP_LISTENER,
29762
29805
  useFactory: () => {
29763
- if (isBrowser()) {
29806
+ if (isBrowser() && inject(IS_HYDRATION_FEATURE_ENABLED)) {
29764
29807
  const appRef = inject(ApplicationRef);
29765
29808
  const pendingTasks = inject(InitialRenderPendingTasks);
29766
- const console = inject(Console);
29809
+ const injector = inject(Injector);
29767
29810
  return () => {
29768
29811
  whenStable(appRef, pendingTasks).then(() => {
29769
29812
  // Wait until an app becomes stable and cleanup all views that
@@ -29772,7 +29815,7 @@ function withDomHydration() {
29772
29815
  // on the server.
29773
29816
  cleanupDehydratedViews(appRef);
29774
29817
  if (typeof ngDevMode !== 'undefined' && ngDevMode) {
29775
- printHydrationStats(console);
29818
+ printHydrationStats(injector);
29776
29819
  }
29777
29820
  });
29778
29821
  };
@@ -30068,5 +30111,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
30068
30111
  * Generated bundle index. Do not edit.
30069
30112
  */
30070
30113
 
30071
- export { ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, 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, Host, HostBinding, HostListener, 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, 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, asNativeElements, assertInInjectionContext, assertPlatform, computed, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, isDevMode, isSignal, isStandalone, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, platformCore, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, runInInjectionContext, setTestabilityGetter, signal, untracked, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, IS_HYDRATION_FEATURE_ENABLED as ɵIS_HYDRATION_FEATURE_ENABLED, InitialRenderPendingTasks as ɵInitialRenderPendingTasks, 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, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, _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, coerceToBoolean as ɵcoerceToBoolean, 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, detectChanges as ɵdetectChanges, devModeEqual as ɵdevModeEqual, escapeTransferStateContent as ɵescapeTransferStateContent, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, getDebugNode as ɵgetDebugNode, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, isBoundToModule as ɵisBoundToModule, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, publishDefaultGlobalUtils$1 as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, registerLocaleData as ɵregisterLocaleData, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, setClassMetadata as ɵsetClassMetadata, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, unescapeTransferStateContent as ɵunescapeTransferStateContent, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, withDomHydration as ɵwithDomHydration, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵ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, ɵɵcontentQuery, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵ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, ɵɵqueryRefresh, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵ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, ɵɵvalidateIframeAttribute, ɵɵviewQuery };
30114
+ export { ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, 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, Host, HostBinding, HostListener, 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, 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, asNativeElements, assertInInjectionContext, assertPlatform, computed, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, isDevMode, isSignal, isStandalone, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, platformCore, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, runInInjectionContext, setTestabilityGetter, signal, untracked, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, ENABLED_SSR_FEATURES as ɵENABLED_SSR_FEATURES, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, IS_HYDRATION_FEATURE_ENABLED as ɵIS_HYDRATION_FEATURE_ENABLED, InitialRenderPendingTasks as ɵInitialRenderPendingTasks, 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, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, _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, coerceToBoolean as ɵcoerceToBoolean, 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, detectChanges as ɵdetectChanges, devModeEqual as ɵdevModeEqual, escapeTransferStateContent as ɵescapeTransferStateContent, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, getDebugNode as ɵgetDebugNode, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, isBoundToModule as ɵisBoundToModule, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, publishDefaultGlobalUtils$1 as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, registerLocaleData as ɵregisterLocaleData, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, setClassMetadata as ɵsetClassMetadata, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, unescapeTransferStateContent as ɵunescapeTransferStateContent, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, withDomHydration as ɵwithDomHydration, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵ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, ɵɵcontentQuery, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵ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, ɵɵqueryRefresh, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵ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, ɵɵvalidateIframeAttribute, ɵɵviewQuery };
30072
30115
  //# sourceMappingURL=core.mjs.map