@angular/core 17.0.7 → 17.0.9

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 (63) hide show
  1. package/esm2022/src/application/application_ref.mjs +24 -12
  2. package/esm2022/src/application/create_application.mjs +2 -2
  3. package/esm2022/src/change_detection/flags.mjs +16 -0
  4. package/esm2022/src/change_detection/scheduling/ng_zone_scheduling.mjs +164 -0
  5. package/esm2022/src/change_detection/scheduling/zoneless_scheduling.mjs +13 -0
  6. package/esm2022/src/change_detection/scheduling/zoneless_scheduling_impl.mjs +56 -0
  7. package/esm2022/src/core.mjs +2 -2
  8. package/esm2022/src/core_private_export.mjs +5 -2
  9. package/esm2022/src/core_render3_private_export.mjs +1 -2
  10. package/esm2022/src/defer/dom_triggers.mjs +1 -5
  11. package/esm2022/src/di/inject_switch.mjs +2 -3
  12. package/esm2022/src/di/r3_injector.mjs +8 -6
  13. package/esm2022/src/errors.mjs +1 -1
  14. package/esm2022/src/event_emitter.mjs +1 -2
  15. package/esm2022/src/hydration/utils.mjs +2 -2
  16. package/esm2022/src/hydration/views.mjs +2 -2
  17. package/esm2022/src/linker/view_container_ref.mjs +2 -2
  18. package/esm2022/src/pending_tasks.mjs +57 -0
  19. package/esm2022/src/platform/platform_ref.mjs +2 -2
  20. package/esm2022/src/render3/after_render_hooks.mjs +16 -34
  21. package/esm2022/src/render3/collect_native_nodes.mjs +2 -3
  22. package/esm2022/src/render3/component_ref.mjs +13 -9
  23. package/esm2022/src/render3/debug/injector_profiler.mjs +1 -1
  24. package/esm2022/src/render3/errors_di.mjs +4 -3
  25. package/esm2022/src/render3/instructions/advance.mjs +2 -2
  26. package/esm2022/src/render3/instructions/change_detection.mjs +1 -6
  27. package/esm2022/src/render3/instructions/mark_view_dirty.mjs +4 -3
  28. package/esm2022/src/render3/instructions/shared.mjs +4 -3
  29. package/esm2022/src/render3/interfaces/container.mjs +1 -6
  30. package/esm2022/src/render3/interfaces/view.mjs +1 -1
  31. package/esm2022/src/render3/node_manipulation.mjs +8 -8
  32. package/esm2022/src/render3/reactivity/effect.mjs +8 -6
  33. package/esm2022/src/render3/styling/style_binding_list.mjs +4 -4
  34. package/esm2022/src/render3/util/discovery_utils.mjs +3 -3
  35. package/esm2022/src/render3/util/global_utils.mjs +28 -28
  36. package/esm2022/src/render3/util/injector_discovery_utils.mjs +1 -1
  37. package/esm2022/src/render3/util/injector_utils.mjs +6 -5
  38. package/esm2022/src/render3/util/view_traversal_utils.mjs +3 -12
  39. package/esm2022/src/render3/util/view_utils.mjs +36 -19
  40. package/esm2022/src/render3/view_ref.mjs +2 -1
  41. package/esm2022/src/version.mjs +6 -5
  42. package/esm2022/src/zone/ng_zone.mjs +1 -61
  43. package/esm2022/testing/src/component_fixture.mjs +62 -58
  44. package/esm2022/testing/src/logger.mjs +3 -3
  45. package/fesm2022/core.mjs +374 -309
  46. package/fesm2022/core.mjs.map +1 -1
  47. package/fesm2022/primitives/signals.mjs +1 -1
  48. package/fesm2022/rxjs-interop.mjs +1 -1
  49. package/fesm2022/testing.mjs +62 -58
  50. package/fesm2022/testing.mjs.map +1 -1
  51. package/index.d.ts +405 -46
  52. package/package.json +1 -1
  53. package/primitives/signals/index.d.ts +1 -1
  54. package/rxjs-interop/index.d.ts +1 -1
  55. package/schematics/migrations/block-template-entities/bundle.js +332 -330
  56. package/schematics/migrations/block-template-entities/bundle.js.map +4 -4
  57. package/schematics/ng-generate/control-flow-migration/bundle.js +498 -397
  58. package/schematics/ng-generate/control-flow-migration/bundle.js.map +4 -4
  59. package/schematics/ng-generate/standalone-migration/bundle.js +349 -323
  60. package/schematics/ng-generate/standalone-migration/bundle.js.map +4 -4
  61. package/testing/index.d.ts +6 -2
  62. package/esm2022/src/change_detection/scheduling.mjs +0 -103
  63. package/esm2022/src/initial_render_pending_tasks.mjs +0 -49
package/fesm2022/core.mjs CHANGED
@@ -1,12 +1,12 @@
1
1
  /**
2
- * @license Angular v17.0.7
2
+ * @license Angular v17.0.9
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
6
6
 
7
7
  import { setActiveConsumer as setActiveConsumer$1, consumerDestroy as consumerDestroy$1, SIGNAL as SIGNAL$1, createComputed as createComputed$1, createSignal as createSignal$1, signalSetFn as signalSetFn$1, signalUpdateFn as signalUpdateFn$1, REACTIVE_NODE as REACTIVE_NODE$1, consumerBeforeComputation as consumerBeforeComputation$1, consumerAfterComputation as consumerAfterComputation$1, consumerPollProducersForChange as consumerPollProducersForChange$1, getActiveConsumer as getActiveConsumer$1, createWatch as createWatch$1, setThrowInvalidWriteToSignalError as setThrowInvalidWriteToSignalError$1 } from '@angular/core/primitives/signals';
8
- import { Subject, Subscription, Observable, merge as merge$1, BehaviorSubject, of } from 'rxjs';
9
- import { share, switchMap, distinctUntilChanged, first } from 'rxjs/operators';
8
+ import { Subject, Subscription, BehaviorSubject } from 'rxjs';
9
+ import { map, first } from 'rxjs/operators';
10
10
 
11
11
  function getClosureSafeProperty(objWithPropertyToExtract) {
12
12
  for (let key in objWithPropertyToExtract) {
@@ -313,8 +313,9 @@ function throwInvalidProviderError(ngModuleType, providers, provider) {
313
313
  }
314
314
  /** Throws an error when a token is not found in DI. */
315
315
  function throwProviderNotFoundError(token, injectorName) {
316
- const injectorDetails = injectorName ? ` in ${injectorName}` : '';
317
- throw new RuntimeError(-201 /* RuntimeErrorCode.PROVIDER_NOT_FOUND */, ngDevMode && `No provider for ${stringifyForError(token)} found${injectorDetails}`);
316
+ const errorMessage = ngDevMode &&
317
+ `No provider for ${stringifyForError(token)} found${injectorName ? ` in ${injectorName}` : ''}`;
318
+ throw new RuntimeError(-201 /* RuntimeErrorCode.PROVIDER_NOT_FOUND */, errorMessage);
318
319
  }
319
320
 
320
321
  // The functions in this file verify that the assumptions we are making
@@ -585,7 +586,7 @@ function injectRootLimpMode(token, notFoundValue, flags) {
585
586
  return null;
586
587
  if (notFoundValue !== undefined)
587
588
  return notFoundValue;
588
- throwProviderNotFoundError(stringify(token), 'Injector');
589
+ throwProviderNotFoundError(token, 'Injector');
589
590
  }
590
591
  /**
591
592
  * Assert that `_injectImplementation` is not `fn`.
@@ -2247,11 +2248,6 @@ var LContainerFlags;
2247
2248
  * This flag, once set, is never unset for the `LContainer`.
2248
2249
  */
2249
2250
  LContainerFlags[LContainerFlags["HasTransplantedViews"] = 2] = "HasTransplantedViews";
2250
- /**
2251
- * Indicates that this LContainer has a view underneath it that needs to be refreshed during
2252
- * change detection.
2253
- */
2254
- LContainerFlags[LContainerFlags["HasChildViewsToRefresh"] = 4] = "HasChildViewsToRefresh";
2255
2251
  })(LContainerFlags || (LContainerFlags = {}));
2256
2252
 
2257
2253
  /**
@@ -2565,6 +2561,15 @@ const profiler = function (event, instance, hookOrListener) {
2565
2561
  const SVG_NAMESPACE = 'svg';
2566
2562
  const MATH_ML_NAMESPACE = 'math';
2567
2563
 
2564
+ // TODO(atscott): flip default internally ASAP and externally for v18 (#52928)
2565
+ let _ensureDirtyViewsAreAlwaysReachable = false;
2566
+ function getEnsureDirtyViewsAreAlwaysReachable() {
2567
+ return _ensureDirtyViewsAreAlwaysReachable;
2568
+ }
2569
+ function setEnsureDirtyViewsAreAlwaysReachable(v) {
2570
+ _ensureDirtyViewsAreAlwaysReachable = v;
2571
+ }
2572
+
2568
2573
  /**
2569
2574
  * For efficiency reasons we often put several different data types (`RNode`, `LView`, `LContainer`)
2570
2575
  * in same location in `LView`. This is because we don't want to pre-allocate space for it
@@ -2731,10 +2736,21 @@ function requiresRefreshOrTraversal(lView) {
2731
2736
  * parents above.
2732
2737
  */
2733
2738
  function updateAncestorTraversalFlagsOnAttach(lView) {
2734
- if (!requiresRefreshOrTraversal(lView)) {
2735
- return;
2739
+ // TODO(atscott): Simplify if...else cases once getEnsureDirtyViewsAreAlwaysReachable is always
2740
+ // `true`. When we attach a view that's marked `Dirty`, we should ensure that it is reached during
2741
+ // the next CD traversal so we add the `RefreshView` flag and mark ancestors accordingly.
2742
+ if (requiresRefreshOrTraversal(lView)) {
2743
+ markAncestorsForTraversal(lView);
2744
+ }
2745
+ else if (lView[FLAGS] & 64 /* LViewFlags.Dirty */) {
2746
+ if (getEnsureDirtyViewsAreAlwaysReachable()) {
2747
+ lView[FLAGS] |= 1024 /* LViewFlags.RefreshView */;
2748
+ markAncestorsForTraversal(lView);
2749
+ }
2750
+ else {
2751
+ lView[ENVIRONMENT].changeDetectionScheduler?.notify();
2752
+ }
2736
2753
  }
2737
- markAncestorsForTraversal(lView);
2738
2754
  }
2739
2755
  /**
2740
2756
  * Ensures views above the given `lView` are traversed during change detection even when they are
@@ -2744,24 +2760,19 @@ function updateAncestorTraversalFlagsOnAttach(lView) {
2744
2760
  * flag is already `true` or the `lView` is detached.
2745
2761
  */
2746
2762
  function markAncestorsForTraversal(lView) {
2747
- let parent = lView[PARENT];
2763
+ lView[ENVIRONMENT].changeDetectionScheduler?.notify();
2764
+ let parent = getLViewParent(lView);
2748
2765
  while (parent !== null) {
2749
2766
  // We stop adding markers to the ancestors once we reach one that already has the marker. This
2750
2767
  // is to avoid needlessly traversing all the way to the root when the marker already exists.
2751
- if ((isLContainer(parent) && (parent[FLAGS] & LContainerFlags.HasChildViewsToRefresh) ||
2752
- (isLView(parent) && parent[FLAGS] & 8192 /* LViewFlags.HasChildViewsToRefresh */))) {
2768
+ if (parent[FLAGS] & 8192 /* LViewFlags.HasChildViewsToRefresh */) {
2753
2769
  break;
2754
2770
  }
2755
- if (isLContainer(parent)) {
2756
- parent[FLAGS] |= LContainerFlags.HasChildViewsToRefresh;
2757
- }
2758
- else {
2759
- parent[FLAGS] |= 8192 /* LViewFlags.HasChildViewsToRefresh */;
2760
- if (!viewAttachedToChangeDetector(parent)) {
2761
- break;
2762
- }
2771
+ parent[FLAGS] |= 8192 /* LViewFlags.HasChildViewsToRefresh */;
2772
+ if (!viewAttachedToChangeDetector(parent)) {
2773
+ break;
2763
2774
  }
2764
- parent = parent[PARENT];
2775
+ parent = getLViewParent(parent);
2765
2776
  }
2766
2777
  }
2767
2778
  /**
@@ -2787,6 +2798,16 @@ function removeLViewOnDestroy(lView, onDestroyCallback) {
2787
2798
  lView[ON_DESTROY_HOOKS].splice(destroyCBIdx, 1);
2788
2799
  }
2789
2800
  }
2801
+ /**
2802
+ * Gets the parent LView of the passed LView, if the PARENT is an LContainer, will get the parent of
2803
+ * that LContainer, which is an LView
2804
+ * @param lView the lView whose parent to get
2805
+ */
2806
+ function getLViewParent(lView) {
2807
+ ngDevMode && assertLView(lView);
2808
+ const parent = lView[PARENT];
2809
+ return isLContainer(parent) ? parent[PARENT] : parent;
2810
+ }
2790
2811
 
2791
2812
  const instructionState = {
2792
2813
  lFrame: createLFrame(null),
@@ -3779,11 +3800,12 @@ function hasParentInjector(parentLocation) {
3779
3800
  return parentLocation !== NO_PARENT_INJECTOR;
3780
3801
  }
3781
3802
  function getParentInjectorIndex(parentLocation) {
3782
- ngDevMode && assertNumber(parentLocation, 'Number expected');
3783
- ngDevMode && assertNotEqual(parentLocation, -1, 'Not a valid state.');
3784
- const parentInjectorIndex = parentLocation & 32767 /* RelativeInjectorLocationFlags.InjectorIndexMask */;
3785
- ngDevMode &&
3803
+ if (ngDevMode) {
3804
+ assertNumber(parentLocation, 'Number expected');
3805
+ assertNotEqual(parentLocation, -1, 'Not a valid state.');
3806
+ const parentInjectorIndex = parentLocation & 32767 /* RelativeInjectorLocationFlags.InjectorIndexMask */;
3786
3807
  assertGreaterThan(parentInjectorIndex, HEADER_OFFSET, 'Parent injector must be pointing past HEADER_OFFSET.');
3808
+ }
3787
3809
  return parentLocation & 32767 /* RelativeInjectorLocationFlags.InjectorIndexMask */;
3788
3810
  }
3789
3811
  function getParentInjectorViewOffset(parentLocation) {
@@ -6150,9 +6172,11 @@ class R3Injector extends EnvironmentInjector {
6150
6172
  multiRecord.multi.push(provider);
6151
6173
  }
6152
6174
  else {
6153
- const existing = this.records.get(token);
6154
- if (ngDevMode && existing && existing.multi !== undefined) {
6155
- throwMixedMultiProviderError();
6175
+ if (ngDevMode) {
6176
+ const existing = this.records.get(token);
6177
+ if (existing && existing.multi !== undefined) {
6178
+ throwMixedMultiProviderError();
6179
+ }
6156
6180
  }
6157
6181
  }
6158
6182
  this.records.set(token, record);
@@ -6220,8 +6244,8 @@ function getUndecoratedInjectableFactory(token) {
6220
6244
  // If the token has parameters then it has dependencies that we cannot resolve implicitly.
6221
6245
  const paramLength = token.length;
6222
6246
  if (paramLength > 0) {
6223
- const args = newArray(paramLength, '?');
6224
- throw new RuntimeError(204 /* RuntimeErrorCode.INVALID_INJECTION_TOKEN */, ngDevMode && `Can't resolve all parameters for ${stringify(token)}: (${args.join(', ')}).`);
6247
+ throw new RuntimeError(204 /* RuntimeErrorCode.INVALID_INJECTION_TOKEN */, ngDevMode &&
6248
+ `Can't resolve all parameters for ${stringify(token)}: (${newArray(paramLength, '?').join(', ')}).`);
6225
6249
  }
6226
6250
  // The constructor function appears to have no parameters.
6227
6251
  // This might be because it inherits from a super-class. In which case, use an injectable
@@ -7915,63 +7939,6 @@ function ensureIcuContainerVisitorLoaded(loader) {
7915
7939
  }
7916
7940
  }
7917
7941
 
7918
- /**
7919
- * Gets the parent LView of the passed LView, if the PARENT is an LContainer, will get the parent of
7920
- * that LContainer, which is an LView
7921
- * @param lView the lView whose parent to get
7922
- */
7923
- function getLViewParent(lView) {
7924
- ngDevMode && assertLView(lView);
7925
- const parent = lView[PARENT];
7926
- return isLContainer(parent) ? parent[PARENT] : parent;
7927
- }
7928
- /**
7929
- * Retrieve the root view from any component or `LView` by walking the parent `LView` until
7930
- * reaching the root `LView`.
7931
- *
7932
- * @param componentOrLView any component or `LView`
7933
- */
7934
- function getRootView(componentOrLView) {
7935
- ngDevMode && assertDefined(componentOrLView, 'component');
7936
- let lView = isLView(componentOrLView) ? componentOrLView : readPatchedLView(componentOrLView);
7937
- while (lView && !(lView[FLAGS] & 512 /* LViewFlags.IsRoot */)) {
7938
- lView = getLViewParent(lView);
7939
- }
7940
- ngDevMode && assertLView(lView);
7941
- return lView;
7942
- }
7943
- /**
7944
- * Returns the context information associated with the application where the target is situated. It
7945
- * does this by walking the parent views until it gets to the root view, then getting the context
7946
- * off of that.
7947
- *
7948
- * @param viewOrComponent the `LView` or component to get the root context for.
7949
- */
7950
- function getRootContext(viewOrComponent) {
7951
- const rootView = getRootView(viewOrComponent);
7952
- ngDevMode &&
7953
- assertDefined(rootView[CONTEXT], 'Root view has no context. Perhaps it is disconnected?');
7954
- return rootView[CONTEXT];
7955
- }
7956
- /**
7957
- * Gets the first `LContainer` in the LView or `null` if none exists.
7958
- */
7959
- function getFirstLContainer(lView) {
7960
- return getNearestLContainer(lView[CHILD_HEAD]);
7961
- }
7962
- /**
7963
- * Gets the next `LContainer` that is a sibling of the given container.
7964
- */
7965
- function getNextLContainer(container) {
7966
- return getNearestLContainer(container[NEXT]);
7967
- }
7968
- function getNearestLContainer(viewOrContainer) {
7969
- while (viewOrContainer !== null && !isLContainer(viewOrContainer)) {
7970
- viewOrContainer = viewOrContainer[NEXT];
7971
- }
7972
- return viewOrContainer;
7973
- }
7974
-
7975
7942
  /**
7976
7943
  * NOTE: for performance reasons, the possible actions are inlined within the function instead of
7977
7944
  * being passed as an argument.
@@ -8054,8 +8021,7 @@ function createElementNode(renderer, name, namespace) {
8054
8021
  * @param lView The view from which elements should be added or removed
8055
8022
  */
8056
8023
  function removeViewFromDOM(tView, lView) {
8057
- const renderer = lView[RENDERER];
8058
- applyView(tView, lView, renderer, 2 /* WalkTNodeTreeAction.Detach */, null, null);
8024
+ detachViewFromDOM(tView, lView);
8059
8025
  lView[HOST] = null;
8060
8026
  lView[T_HOST] = null;
8061
8027
  }
@@ -8085,6 +8051,9 @@ function addViewToDOM(tView, parentTNode, renderer, lView, parentNativeNode, bef
8085
8051
  * @param lView the `LView` to be detached.
8086
8052
  */
8087
8053
  function detachViewFromDOM(tView, lView) {
8054
+ // The scheduler must be notified because the animation engine is what actually does the DOM
8055
+ // removal and only runs at the end of change detection.
8056
+ lView[ENVIRONMENT].changeDetectionScheduler?.notify();
8088
8057
  applyView(tView, lView, lView[RENDERER], 2 /* WalkTNodeTreeAction.Detach */, null, null);
8089
8058
  }
8090
8059
  /**
@@ -8216,8 +8185,7 @@ function detachMovedView(declarationContainer, lView) {
8216
8185
  assertDefined(declarationContainer[MOVED_VIEWS], 'A projected view should belong to a non-empty projected views collection');
8217
8186
  const movedViews = declarationContainer[MOVED_VIEWS];
8218
8187
  const declarationViewIndex = movedViews.indexOf(lView);
8219
- const insertionLContainer = lView[PARENT];
8220
- ngDevMode && assertLContainer(insertionLContainer);
8188
+ ngDevMode && assertLContainer(lView[PARENT]);
8221
8189
  movedViews.splice(declarationViewIndex, 1);
8222
8190
  }
8223
8191
  /**
@@ -9841,6 +9809,12 @@ function getSanitizer() {
9841
9809
  return lView && lView[ENVIRONMENT].sanitizer;
9842
9810
  }
9843
9811
 
9812
+ /**
9813
+ * Injectable that is notified when an `LView` is made aware of changes to application state.
9814
+ */
9815
+ class ChangeDetectionScheduler {
9816
+ }
9817
+
9844
9818
  /**
9845
9819
  * Create a `StateKey<T>` that can be used to store value of type T with `TransferState`.
9846
9820
  *
@@ -10021,7 +9995,7 @@ const SSR_CONTENT_INTEGRITY_MARKER = 'nghm';
10021
9995
  * @param injector Injector that this component has access to.
10022
9996
  * @param isRootView Specifies whether we trying to read hydration info for the root view.
10023
9997
  */
10024
- let _retrieveHydrationInfoImpl = (rNode, injector, isRootView) => null;
9998
+ let _retrieveHydrationInfoImpl = () => null;
10025
9999
  function retrieveHydrationInfoImpl(rNode, injector, isRootView = false) {
10026
10000
  let nghAttrValue = rNode.getAttribute(NGH_ATTR_NAME);
10027
10001
  if (nghAttrValue == null)
@@ -10411,24 +10385,6 @@ class Sanitizer {
10411
10385
  }); }
10412
10386
  }
10413
10387
 
10414
- /**
10415
- * @description Represents the version of Angular
10416
- *
10417
- * @publicApi
10418
- */
10419
- class Version {
10420
- constructor(full) {
10421
- this.full = full;
10422
- this.major = full.split('.')[0];
10423
- this.minor = full.split('.')[1];
10424
- this.patch = full.split('.').slice(2).join('.');
10425
- }
10426
- }
10427
- /**
10428
- * @publicApi
10429
- */
10430
- const VERSION = new Version('17.0.7');
10431
-
10432
10388
  // This default value is when checking the hierarchy for a token.
10433
10389
  //
10434
10390
  // It means both:
@@ -11703,6 +11659,53 @@ const REACTIVE_LVIEW_CONSUMER_NODE = {
11703
11659
  },
11704
11660
  };
11705
11661
 
11662
+ /**
11663
+ * Retrieve the root view from any component or `LView` by walking the parent `LView` until
11664
+ * reaching the root `LView`.
11665
+ *
11666
+ * @param componentOrLView any component or `LView`
11667
+ */
11668
+ function getRootView(componentOrLView) {
11669
+ ngDevMode && assertDefined(componentOrLView, 'component');
11670
+ let lView = isLView(componentOrLView) ? componentOrLView : readPatchedLView(componentOrLView);
11671
+ while (lView && !(lView[FLAGS] & 512 /* LViewFlags.IsRoot */)) {
11672
+ lView = getLViewParent(lView);
11673
+ }
11674
+ ngDevMode && assertLView(lView);
11675
+ return lView;
11676
+ }
11677
+ /**
11678
+ * Returns the context information associated with the application where the target is situated. It
11679
+ * does this by walking the parent views until it gets to the root view, then getting the context
11680
+ * off of that.
11681
+ *
11682
+ * @param viewOrComponent the `LView` or component to get the root context for.
11683
+ */
11684
+ function getRootContext(viewOrComponent) {
11685
+ const rootView = getRootView(viewOrComponent);
11686
+ ngDevMode &&
11687
+ assertDefined(rootView[CONTEXT], 'Root view has no context. Perhaps it is disconnected?');
11688
+ return rootView[CONTEXT];
11689
+ }
11690
+ /**
11691
+ * Gets the first `LContainer` in the LView or `null` if none exists.
11692
+ */
11693
+ function getFirstLContainer(lView) {
11694
+ return getNearestLContainer(lView[CHILD_HEAD]);
11695
+ }
11696
+ /**
11697
+ * Gets the next `LContainer` that is a sibling of the given container.
11698
+ */
11699
+ function getNextLContainer(container) {
11700
+ return getNearestLContainer(container[NEXT]);
11701
+ }
11702
+ function getNearestLContainer(viewOrContainer) {
11703
+ while (viewOrContainer !== null && !isLContainer(viewOrContainer)) {
11704
+ viewOrContainer = viewOrContainer[NEXT];
11705
+ }
11706
+ return viewOrContainer;
11707
+ }
11708
+
11706
11709
  const ERROR_ORIGINAL_ERROR = 'ngOriginalError';
11707
11710
  function wrappedError(message, originalError) {
11708
11711
  const msg = `${message} caused by: ${originalError instanceof Error ? originalError.message : originalError}`;
@@ -11944,7 +11947,7 @@ const NO_CHANGE = (typeof ngDevMode === 'undefined' || ngDevMode) ? { __brand__:
11944
11947
  *
11945
11948
  * @codeGenApi
11946
11949
  */
11947
- function ɵɵadvance(delta) {
11950
+ function ɵɵadvance(delta = 1) {
11948
11951
  ngDevMode && assertGreaterThan(delta, 0, 'Can only advance forward');
11949
11952
  selectIndexInternal(getTView(), getLView(), getSelectedIndex() + delta, !!ngDevMode && isInCheckNoChangesMode());
11950
11953
  }
@@ -12043,7 +12046,8 @@ function processHostBindingOpCodes(tView, lView) {
12043
12046
  function createLView(parentLView, tView, context, flags, host, tHostNode, environment, renderer, injector, embeddedViewInjector, hydrationInfo) {
12044
12047
  const lView = tView.blueprint.slice();
12045
12048
  lView[HOST] = host;
12046
- lView[FLAGS] = flags | 4 /* LViewFlags.CreationMode */ | 128 /* LViewFlags.Attached */ | 8 /* LViewFlags.FirstLViewPass */;
12049
+ lView[FLAGS] = flags | 4 /* LViewFlags.CreationMode */ | 128 /* LViewFlags.Attached */ | 8 /* LViewFlags.FirstLViewPass */ |
12050
+ 64 /* LViewFlags.Dirty */;
12047
12051
  if (embeddedViewInjector !== null ||
12048
12052
  (parentLView && (parentLView[FLAGS] & 2048 /* LViewFlags.HasEmbeddedViewInjector */))) {
12049
12053
  lView[FLAGS] |= 2048 /* LViewFlags.HasEmbeddedViewInjector */;
@@ -12353,7 +12357,7 @@ function applyRootElementTransform(rootElement) {
12353
12357
  *
12354
12358
  * @param rootElement the app root HTML Element
12355
12359
  */
12356
- let _applyRootElementTransformImpl = (rootElement) => null;
12360
+ let _applyRootElementTransformImpl = () => null;
12357
12361
  /**
12358
12362
  * Processes text node markers before hydration begins. This replaces any special comment
12359
12363
  * nodes that were added prior to serialization are swapped out to restore proper text
@@ -13309,14 +13313,12 @@ const MAXIMUM_REFRESH_RERUNS = 100;
13309
13313
  function detectChangesInternal(lView, notifyErrorHandler = true) {
13310
13314
  const environment = lView[ENVIRONMENT];
13311
13315
  const rendererFactory = environment.rendererFactory;
13312
- const afterRenderEventManager = environment.afterRenderEventManager;
13313
13316
  // Check no changes mode is a dev only mode used to verify that bindings have not changed
13314
13317
  // since they were assigned. We do not want to invoke renderer factory functions in that mode
13315
13318
  // to avoid any possible side-effects.
13316
13319
  const checkNoChangesMode = !!ngDevMode && isInCheckNoChangesMode();
13317
13320
  if (!checkNoChangesMode) {
13318
13321
  rendererFactory.begin?.();
13319
- afterRenderEventManager?.begin();
13320
13322
  }
13321
13323
  try {
13322
13324
  detectChangesInViewWhileDirty(lView);
@@ -13333,8 +13335,6 @@ function detectChangesInternal(lView, notifyErrorHandler = true) {
13333
13335
  // One final flush of the effects queue to catch any effects created in `ngAfterViewInit` or
13334
13336
  // other post-order hooks.
13335
13337
  environment.inlineEffectRunner?.flush();
13336
- // Invoke all callbacks registered via `after*Render`, if needed.
13337
- afterRenderEventManager?.end();
13338
13338
  }
13339
13339
  }
13340
13340
  }
@@ -13540,7 +13540,6 @@ function viewShouldHaveReactiveConsumer(tView) {
13540
13540
  */
13541
13541
  function detectChangesInEmbeddedViews(lView, mode) {
13542
13542
  for (let lContainer = getFirstLContainer(lView); lContainer !== null; lContainer = getNextLContainer(lContainer)) {
13543
- lContainer[FLAGS] &= ~LContainerFlags.HasChildViewsToRefresh;
13544
13543
  for (let i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) {
13545
13544
  const embeddedLView = lContainer[i];
13546
13545
  detectChangesInViewIfAttached(embeddedLView, mode);
@@ -13652,6 +13651,7 @@ function detectChangesInChildComponents(hostLView, components, mode) {
13652
13651
  * @returns the root LView
13653
13652
  */
13654
13653
  function markViewDirty(lView) {
13654
+ lView[ENVIRONMENT].changeDetectionScheduler?.notify();
13655
13655
  while (lView) {
13656
13656
  lView[FLAGS] |= 64 /* LViewFlags.Dirty */;
13657
13657
  const parent = getLViewParent(lView);
@@ -13945,6 +13945,7 @@ class ViewRef$1 {
13945
13945
  throw new RuntimeError(902 /* RuntimeErrorCode.VIEW_ALREADY_ATTACHED */, ngDevMode && 'This view is already attached to a ViewContainer!');
13946
13946
  }
13947
13947
  this._appRef = appRef;
13948
+ updateAncestorTraversalFlagsOnAttach(this._lView);
13948
13949
  }
13949
13950
  }
13950
13951
 
@@ -14204,11 +14205,11 @@ class ZoneAwareMicrotaskScheduler {
14204
14205
  * available/requested.
14205
14206
  */
14206
14207
  class EffectHandle {
14207
- constructor(scheduler, effectFn, creationZone, destroyRef, errorHandler, allowSignalWrites) {
14208
+ constructor(scheduler, effectFn, creationZone, destroyRef, injector, allowSignalWrites) {
14208
14209
  this.scheduler = scheduler;
14209
14210
  this.effectFn = effectFn;
14210
14211
  this.creationZone = creationZone;
14211
- this.errorHandler = errorHandler;
14212
+ this.injector = injector;
14212
14213
  this.watcher = createWatch$1((onCleanup) => this.runEffect(onCleanup), () => this.schedule(), allowSignalWrites);
14213
14214
  this.unregisterOnDestroy = destroyRef?.onDestroy(() => this.destroy());
14214
14215
  }
@@ -14217,7 +14218,10 @@ class EffectHandle {
14217
14218
  this.effectFn(onCleanup);
14218
14219
  }
14219
14220
  catch (err) {
14220
- this.errorHandler?.handleError(err);
14221
+ // Inject the `ErrorHandler` here in order to avoid circular DI error
14222
+ // if the effect is used inside of a custom `ErrorHandler`.
14223
+ const errorHandler = this.injector.get(ErrorHandler, null, { optional: true });
14224
+ errorHandler?.handleError(err);
14221
14225
  }
14222
14226
  }
14223
14227
  run() {
@@ -14244,9 +14248,8 @@ function effect(effectFn, options) {
14244
14248
  'effect inside the component constructor.');
14245
14249
  !options?.injector && assertInInjectionContext(effect);
14246
14250
  const injector = options?.injector ?? inject(Injector);
14247
- const errorHandler = injector.get(ErrorHandler, null, { optional: true });
14248
14251
  const destroyRef = options?.manualCleanup !== true ? injector.get(DestroyRef) : null;
14249
- const handle = new EffectHandle(injector.get(APP_EFFECT_SCHEDULER), effectFn, (typeof Zone === 'undefined') ? null : Zone.current, destroyRef, errorHandler, options?.allowSignalWrites ?? false);
14252
+ const handle = new EffectHandle(injector.get(APP_EFFECT_SCHEDULER), effectFn, (typeof Zone === 'undefined') ? null : Zone.current, destroyRef, injector, options?.allowSignalWrites ?? false);
14250
14253
  // Effects need to be marked dirty manually to trigger their initial run. The timing of this
14251
14254
  // marking matters, because the effects may read signals that track component inputs, which are
14252
14255
  // only available after those components have had their first update pass.
@@ -14289,7 +14292,6 @@ function performanceMarkFeature(feature) {
14289
14292
  performance?.mark?.('mark_feature_usage', { detail: { feature } });
14290
14293
  }
14291
14294
 
14292
- /// <reference types="rxjs" />
14293
14295
  class EventEmitter_ extends Subject {
14294
14296
  constructor(isAsync = false) {
14295
14297
  super();
@@ -14788,63 +14790,6 @@ class NoopNgZone {
14788
14790
  return fn.apply(applyThis, applyArgs);
14789
14791
  }
14790
14792
  }
14791
- /**
14792
- * Token used to drive ApplicationRef.isStable
14793
- *
14794
- * TODO: This should be moved entirely to NgZone (as a breaking change) so it can be tree-shakeable
14795
- * for `NoopNgZone` which is always just an `Observable` of `true`. Additionally, we should consider
14796
- * whether the property on `NgZone` should be `Observable` or `Signal`.
14797
- */
14798
- const ZONE_IS_STABLE_OBSERVABLE = new InjectionToken(ngDevMode ? 'isStable Observable' : '', {
14799
- providedIn: 'root',
14800
- // TODO(atscott): Replace this with a suitable default like `new
14801
- // BehaviorSubject(true).asObservable`. Again, long term this won't exist on ApplicationRef at
14802
- // all but until we can remove it, we need a default value zoneless.
14803
- factory: isStableFactory,
14804
- });
14805
- function isStableFactory() {
14806
- const zone = inject(NgZone);
14807
- let _stable = true;
14808
- const isCurrentlyStable = new Observable((observer) => {
14809
- _stable = zone.isStable && !zone.hasPendingMacrotasks && !zone.hasPendingMicrotasks;
14810
- zone.runOutsideAngular(() => {
14811
- observer.next(_stable);
14812
- observer.complete();
14813
- });
14814
- });
14815
- const isStable = new Observable((observer) => {
14816
- // Create the subscription to onStable outside the Angular Zone so that
14817
- // the callback is run outside the Angular Zone.
14818
- let stableSub;
14819
- zone.runOutsideAngular(() => {
14820
- stableSub = zone.onStable.subscribe(() => {
14821
- NgZone.assertNotInAngularZone();
14822
- // Check whether there are no pending macro/micro tasks in the next tick
14823
- // to allow for NgZone to update the state.
14824
- queueMicrotask(() => {
14825
- if (!_stable && !zone.hasPendingMacrotasks && !zone.hasPendingMicrotasks) {
14826
- _stable = true;
14827
- observer.next(true);
14828
- }
14829
- });
14830
- });
14831
- });
14832
- const unstableSub = zone.onUnstable.subscribe(() => {
14833
- NgZone.assertInAngularZone();
14834
- if (_stable) {
14835
- _stable = false;
14836
- zone.runOutsideAngular(() => {
14837
- observer.next(false);
14838
- });
14839
- }
14840
- });
14841
- return () => {
14842
- stableSub.unsubscribe();
14843
- unstableSub.unsubscribe();
14844
- };
14845
- });
14846
- return merge$1(isCurrentlyStable, isStable.pipe(share()));
14847
- }
14848
14793
  function shouldBeIgnoredByZone(applyArgs) {
14849
14794
  if (!Array.isArray(applyArgs)) {
14850
14795
  return false;
@@ -14867,8 +14812,6 @@ function getNgZone(ngZoneToUse = 'zone.js', options) {
14867
14812
  return ngZoneToUse;
14868
14813
  }
14869
14814
 
14870
- // Public API for Zone
14871
-
14872
14815
  /**
14873
14816
  * The phase to run an `afterRender` or `afterNextRender` callback in.
14874
14817
  *
@@ -15137,13 +15080,6 @@ class AfterRenderCallbackHandlerImpl {
15137
15080
  };
15138
15081
  this.deferredCallbacks = new Set();
15139
15082
  }
15140
- validateBegin() {
15141
- if (this.executingCallbacks) {
15142
- throw new RuntimeError(102 /* RuntimeErrorCode.RECURSIVE_APPLICATION_RENDER */, ngDevMode &&
15143
- 'A new render operation began before the previous operation ended. ' +
15144
- 'Did you trigger change detection from afterRender or afterNextRender?');
15145
- }
15146
- }
15147
15083
  register(callback) {
15148
15084
  // If we're currently running callbacks, new callbacks should be deferred
15149
15085
  // until the next render operation.
@@ -15155,9 +15091,11 @@ class AfterRenderCallbackHandlerImpl {
15155
15091
  this.deferredCallbacks.delete(callback);
15156
15092
  }
15157
15093
  execute() {
15094
+ let callbacksExecuted = false;
15158
15095
  this.executingCallbacks = true;
15159
15096
  for (const bucket of Object.values(this.buckets)) {
15160
15097
  for (const callback of bucket) {
15098
+ callbacksExecuted = true;
15161
15099
  callback.invoke();
15162
15100
  }
15163
15101
  }
@@ -15166,6 +15104,7 @@ class AfterRenderCallbackHandlerImpl {
15166
15104
  this.buckets[callback.phase].add(callback);
15167
15105
  }
15168
15106
  this.deferredCallbacks.clear();
15107
+ return callbacksExecuted;
15169
15108
  }
15170
15109
  destroy() {
15171
15110
  for (const bucket of Object.values(this.buckets)) {
@@ -15180,37 +15119,25 @@ class AfterRenderCallbackHandlerImpl {
15180
15119
  */
15181
15120
  class AfterRenderEventManager {
15182
15121
  constructor() {
15183
- this.renderDepth = 0;
15184
15122
  /* @internal */
15185
15123
  this.handler = null;
15186
15124
  /* @internal */
15187
15125
  this.internalCallbacks = [];
15188
15126
  }
15189
15127
  /**
15190
- * Mark the beginning of a render operation (i.e. CD cycle).
15191
- * Throws if called while executing callbacks.
15128
+ * Executes callbacks. Returns `true` if any callbacks executed.
15192
15129
  */
15193
- begin() {
15194
- this.handler?.validateBegin();
15195
- this.renderDepth++;
15196
- }
15197
- /**
15198
- * Mark the end of a render operation. Callbacks will be
15199
- * executed if there are no more pending operations.
15200
- */
15201
- end() {
15202
- ngDevMode && assertGreaterThan(this.renderDepth, 0, 'renderDepth must be greater than 0');
15203
- this.renderDepth--;
15204
- if (this.renderDepth === 0) {
15205
- // Note: internal callbacks power `internalAfterNextRender`. Since internal callbacks
15206
- // are fairly trivial, they are kept separate so that `AfterRenderCallbackHandlerImpl`
15207
- // can still be tree-shaken unless used by the application.
15208
- for (const callback of this.internalCallbacks) {
15209
- callback();
15210
- }
15211
- this.internalCallbacks.length = 0;
15212
- this.handler?.execute();
15130
+ execute() {
15131
+ // Note: internal callbacks power `internalAfterNextRender`. Since internal callbacks
15132
+ // are fairly trivial, they are kept separate so that `AfterRenderCallbackHandlerImpl`
15133
+ // can still be tree-shaken unless used by the application.
15134
+ const callbacks = [...this.internalCallbacks];
15135
+ this.internalCallbacks.length = 0;
15136
+ for (const callback of callbacks) {
15137
+ callback();
15213
15138
  }
15139
+ const handlerCallbacksExecuted = this.handler?.execute();
15140
+ return !!handlerCallbacksExecuted || callbacks.length > 0;
15214
15141
  }
15215
15142
  ngOnDestroy() {
15216
15143
  this.handler?.destroy();
@@ -15486,12 +15413,14 @@ class ComponentFactory extends ComponentFactory$1 {
15486
15413
  }
15487
15414
  const sanitizer = rootViewInjector.get(Sanitizer, null);
15488
15415
  const afterRenderEventManager = rootViewInjector.get(AfterRenderEventManager, null);
15416
+ const changeDetectionScheduler = rootViewInjector.get(ChangeDetectionScheduler, null);
15489
15417
  const environment = {
15490
15418
  rendererFactory,
15491
15419
  sanitizer,
15492
15420
  // We don't use inline effects (yet).
15493
15421
  inlineEffectRunner: null,
15494
15422
  afterRenderEventManager,
15423
+ changeDetectionScheduler,
15495
15424
  };
15496
15425
  const hostRenderer = rendererFactory.createRenderer(null, this.componentDef);
15497
15426
  // Determine a tag name used for creating host elements when this component is created
@@ -15500,12 +15429,13 @@ class ComponentFactory extends ComponentFactory$1 {
15500
15429
  const hostRNode = rootSelectorOrNode ?
15501
15430
  locateHostElement(hostRenderer, rootSelectorOrNode, this.componentDef.encapsulation, rootViewInjector) :
15502
15431
  createElementNode(hostRenderer, elementName, getNamespace(elementName));
15503
- // Signal components use the granular "RefreshView" for change detection
15504
- const signalFlags = (4096 /* LViewFlags.SignalView */ | 512 /* LViewFlags.IsRoot */);
15505
- // Non-signal components use the traditional "CheckAlways or OnPush/Dirty" change detection
15506
- const nonSignalFlags = this.componentDef.onPush ? 64 /* LViewFlags.Dirty */ | 512 /* LViewFlags.IsRoot */ :
15507
- 16 /* LViewFlags.CheckAlways */ | 512 /* LViewFlags.IsRoot */;
15508
- const rootFlags = this.componentDef.signals ? signalFlags : nonSignalFlags;
15432
+ let rootFlags = 512 /* LViewFlags.IsRoot */;
15433
+ if (this.componentDef.signals) {
15434
+ rootFlags |= 4096 /* LViewFlags.SignalView */;
15435
+ }
15436
+ else if (!this.componentDef.onPush) {
15437
+ rootFlags |= 16 /* LViewFlags.CheckAlways */;
15438
+ }
15509
15439
  let hydrationInfo = null;
15510
15440
  if (hostRNode !== null) {
15511
15441
  hydrationInfo = retrieveHydrationInfo(hostRNode, rootViewInjector, true /* isRootView */);
@@ -15712,7 +15642,8 @@ function createRootComponent(componentView, rootComponentDef, rootDirectives, ho
15712
15642
  /** Sets the static attributes on a root component. */
15713
15643
  function setRootNodeAttributes(hostRenderer, componentDef, hostRNode, rootSelectorOrNode) {
15714
15644
  if (rootSelectorOrNode) {
15715
- setUpAttributes(hostRenderer, hostRNode, ['ng-version', VERSION.full]);
15645
+ // The placeholder will be replaced with the actual version at build time.
15646
+ setUpAttributes(hostRenderer, hostRNode, ['ng-version', '17.0.9']);
15716
15647
  }
15717
15648
  else {
15718
15649
  // If host element is created as a part of this function call (i.e. `rootSelectorOrNode`
@@ -17064,8 +16995,8 @@ function insertTStylingBinding(tData, tNode, tStylingKeyWithStatic, index, isHos
17064
16995
  if (isKeyDuplicateOfStatic) {
17065
16996
  tData[index + 1] = setTStylingRangePrevDuplicate(tData[index + 1]);
17066
16997
  }
17067
- markDuplicates(tData, tStylingKey, index, true, isClassBinding);
17068
- markDuplicates(tData, tStylingKey, index, false, isClassBinding);
16998
+ markDuplicates(tData, tStylingKey, index, true);
16999
+ markDuplicates(tData, tStylingKey, index, false);
17069
17000
  markDuplicateOfResidualStyling(tNode, tStylingKey, tData, index, isClassBinding);
17070
17001
  tBindings = toTStylingRange(tmplHead, tmplTail);
17071
17002
  if (isClassBinding) {
@@ -17149,7 +17080,7 @@ function markDuplicateOfResidualStyling(tNode, tStylingKey, tData, index, isClas
17149
17080
  * - `true` for previous (lower priority);
17150
17081
  * - `false` for next (higher priority).
17151
17082
  */
17152
- function markDuplicates(tData, tStylingKey, index, isPrevDir, isClassBinding) {
17083
+ function markDuplicates(tData, tStylingKey, index, isPrevDir) {
17153
17084
  const tStylingAtIndex = tData[index + 1];
17154
17085
  const isMap = tStylingKey === null;
17155
17086
  let cursor = isPrevDir ? getTStylingRangePrev(tStylingAtIndex) : getTStylingRangeNext(tStylingAtIndex);
@@ -19451,7 +19382,7 @@ function locateDehydratedViewsInContainer(currentRNode, serializedViews) {
19451
19382
  * stored on a given lContainer.
19452
19383
  * Returns `null` by default, when hydration is not enabled.
19453
19384
  */
19454
- let _findMatchingDehydratedViewImpl = (lContainer, template) => null;
19385
+ let _findMatchingDehydratedViewImpl = () => null;
19455
19386
  /**
19456
19387
  * Retrieves the next dehydrated view from the LContainer and verifies that
19457
19388
  * it matches a given template id (from the TView that was used to create this
@@ -20191,7 +20122,7 @@ function insertAnchorNode(hostLView, hostTNode) {
20191
20122
  return commentNode;
20192
20123
  }
20193
20124
  let _locateOrCreateAnchorNode = createAnchorNode;
20194
- let _populateDehydratedViewsInLContainer = (lContainer, tNode, hostLView) => false; // noop by default
20125
+ let _populateDehydratedViewsInLContainer = () => false; // noop by default
20195
20126
  /**
20196
20127
  * Looks up dehydrated views that belong to a given LContainer and populates
20197
20128
  * this information into the `LContainer[DEHYDRATED_VIEWS]` slot. When running
@@ -20767,6 +20698,8 @@ function invokeAllTriggerCleanupFns(lDetails) {
20767
20698
  invokeTriggerCleanupFns(0 /* TriggerType.Regular */, lDetails);
20768
20699
  }
20769
20700
 
20701
+ // Public API for Zone
20702
+
20770
20703
  /**
20771
20704
  * Calculates a data slot index for defer block info (either static or
20772
20705
  * instance-specific), given an index of a defer instruction.
@@ -20936,8 +20869,6 @@ function onInteraction(trigger, callback) {
20936
20869
  // are referencing it.
20937
20870
  entry = new DeferEventEntry();
20938
20871
  interactionTriggers.set(trigger, entry);
20939
- // Ensure that the handler runs in the NgZone
20940
- ngDevMode && NgZone.assertInAngularZone();
20941
20872
  for (const name of interactionEventNames) {
20942
20873
  trigger.addEventListener(name, entry.listener, eventListenerOptions);
20943
20874
  }
@@ -20965,8 +20896,6 @@ function onHover(trigger, callback) {
20965
20896
  if (!entry) {
20966
20897
  entry = new DeferEventEntry();
20967
20898
  hoverTriggers.set(trigger, entry);
20968
- // Ensure that the handler runs in the NgZone
20969
- ngDevMode && NgZone.assertInAngularZone();
20970
20899
  for (const name of hoverEventNames) {
20971
20900
  trigger.addEventListener(name, entry.listener, eventListenerOptions);
20972
20901
  }
@@ -29969,6 +29898,25 @@ const NgModule = makeDecorator('NgModule', (ngModule) => ngModule, undefined, un
29969
29898
  * to be used by the decorator versions of these annotations.
29970
29899
  */
29971
29900
 
29901
+ /**
29902
+ * @description Represents the version of Angular
29903
+ *
29904
+ * @publicApi
29905
+ */
29906
+ class Version {
29907
+ constructor(full) {
29908
+ this.full = full;
29909
+ const parts = full.split('.');
29910
+ this.major = parts[0];
29911
+ this.minor = parts[1];
29912
+ this.patch = parts.slice(2).join('.');
29913
+ }
29914
+ }
29915
+ /**
29916
+ * @publicApi
29917
+ */
29918
+ const VERSION = new Version('17.0.9');
29919
+
29972
29920
  /*
29973
29921
  * This file exists to support compilation of @angular/core in Ivy mode.
29974
29922
  *
@@ -30007,45 +29955,6 @@ class Console {
30007
29955
  args: [{ providedIn: 'platform' }]
30008
29956
  }], null, null); })();
30009
29957
 
30010
- /**
30011
- * *Internal* service that keeps track of pending tasks happening in the system
30012
- * during the initial rendering. No tasks are tracked after an initial
30013
- * rendering.
30014
- *
30015
- * This information is needed to make sure that the serialization on the server
30016
- * is delayed until all tasks in the queue (such as an initial navigation or a
30017
- * pending HTTP request) are completed.
30018
- */
30019
- class InitialRenderPendingTasks {
30020
- constructor() {
30021
- this.taskId = 0;
30022
- this.pendingTasks = new Set();
30023
- this.hasPendingTasks = new BehaviorSubject(false);
30024
- }
30025
- add() {
30026
- this.hasPendingTasks.next(true);
30027
- const taskId = this.taskId++;
30028
- this.pendingTasks.add(taskId);
30029
- return taskId;
30030
- }
30031
- remove(taskId) {
30032
- this.pendingTasks.delete(taskId);
30033
- if (this.pendingTasks.size === 0) {
30034
- this.hasPendingTasks.next(false);
30035
- }
30036
- }
30037
- ngOnDestroy() {
30038
- this.pendingTasks.clear();
30039
- this.hasPendingTasks.next(false);
30040
- }
30041
- static { this.ɵfac = function InitialRenderPendingTasks_Factory(t) { return new (t || InitialRenderPendingTasks)(); }; }
30042
- static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: InitialRenderPendingTasks, factory: InitialRenderPendingTasks.ɵfac, providedIn: 'root' }); }
30043
- }
30044
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(InitialRenderPendingTasks, [{
30045
- type: Injectable,
30046
- args: [{ providedIn: 'root' }]
30047
- }], null, null); })();
30048
-
30049
29958
  /**
30050
29959
  * Combination of NgModuleFactory and ComponentFactories.
30051
29960
  *
@@ -30152,6 +30061,53 @@ const COMPILER_OPTIONS = new InjectionToken('compilerOptions');
30152
30061
  class CompilerFactory {
30153
30062
  }
30154
30063
 
30064
+ /**
30065
+ * *Internal* service that keeps track of pending tasks happening in the system.
30066
+ *
30067
+ * This information is needed to make sure that the serialization on the server
30068
+ * is delayed until all tasks in the queue (such as an initial navigation or a
30069
+ * pending HTTP request) are completed.
30070
+ *
30071
+ * Pending tasks continue to contribute to the stableness of `ApplicationRef`
30072
+ * throughout the lifetime of the application.
30073
+ */
30074
+ class PendingTasks {
30075
+ constructor() {
30076
+ this.taskId = 0;
30077
+ this.pendingTasks = new Set();
30078
+ this.hasPendingTasks = new BehaviorSubject(false);
30079
+ }
30080
+ get _hasPendingTasks() {
30081
+ return this.hasPendingTasks.value;
30082
+ }
30083
+ add() {
30084
+ if (!this._hasPendingTasks) {
30085
+ this.hasPendingTasks.next(true);
30086
+ }
30087
+ const taskId = this.taskId++;
30088
+ this.pendingTasks.add(taskId);
30089
+ return taskId;
30090
+ }
30091
+ remove(taskId) {
30092
+ this.pendingTasks.delete(taskId);
30093
+ if (this.pendingTasks.size === 0 && this._hasPendingTasks) {
30094
+ this.hasPendingTasks.next(false);
30095
+ }
30096
+ }
30097
+ ngOnDestroy() {
30098
+ this.pendingTasks.clear();
30099
+ if (this._hasPendingTasks) {
30100
+ this.hasPendingTasks.next(false);
30101
+ }
30102
+ }
30103
+ static { this.ɵfac = function PendingTasks_Factory(t) { return new (t || PendingTasks)(); }; }
30104
+ static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: PendingTasks, factory: PendingTasks.ɵfac, providedIn: 'root' }); }
30105
+ }
30106
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(PendingTasks, [{
30107
+ type: Injectable,
30108
+ args: [{ providedIn: 'root' }]
30109
+ }], null, null); })();
30110
+
30155
30111
  /**
30156
30112
  * These are the data structures that our framework injector profiler will fill with data in order
30157
30113
  * to support DI debugging APIs.
@@ -30957,6 +30913,28 @@ function getModuleInjectorOfNodeInjector(injector) {
30957
30913
  * tools are patched (window.ng).
30958
30914
  * */
30959
30915
  const GLOBAL_PUBLISH_EXPANDO_KEY = 'ng';
30916
+ const globalUtilsFunctions = {
30917
+ /**
30918
+ * Warning: functions that start with `ɵ` are considered *INTERNAL* and should not be relied upon
30919
+ * in application's code. The contract of those functions might be changed in any release and/or a
30920
+ * function can be removed completely.
30921
+ */
30922
+ 'ɵgetDependenciesFromInjectable': getDependenciesFromInjectable,
30923
+ 'ɵgetInjectorProviders': getInjectorProviders,
30924
+ 'ɵgetInjectorResolutionPath': getInjectorResolutionPath,
30925
+ 'ɵgetInjectorMetadata': getInjectorMetadata,
30926
+ 'ɵsetProfiler': setProfiler,
30927
+ 'getDirectiveMetadata': getDirectiveMetadata$1,
30928
+ 'getComponent': getComponent,
30929
+ 'getContext': getContext,
30930
+ 'getListeners': getListeners,
30931
+ 'getOwningComponent': getOwningComponent,
30932
+ 'getHostElement': getHostElement,
30933
+ 'getInjector': getInjector,
30934
+ 'getRootComponents': getRootComponents,
30935
+ 'getDirectives': getDirectives,
30936
+ 'applyChanges': applyChanges,
30937
+ };
30960
30938
  let _published = false;
30961
30939
  /**
30962
30940
  * Publishes a collection of default debug tools onto`window.ng`.
@@ -30968,26 +30946,9 @@ function publishDefaultGlobalUtils$1() {
30968
30946
  if (!_published) {
30969
30947
  _published = true;
30970
30948
  setupFrameworkInjectorProfiler();
30971
- publishGlobalUtil('ɵgetDependenciesFromInjectable', getDependenciesFromInjectable);
30972
- publishGlobalUtil('ɵgetInjectorProviders', getInjectorProviders);
30973
- publishGlobalUtil('ɵgetInjectorResolutionPath', getInjectorResolutionPath);
30974
- publishGlobalUtil('ɵgetInjectorMetadata', getInjectorMetadata);
30975
- /**
30976
- * Warning: this function is *INTERNAL* and should not be relied upon in application's code.
30977
- * The contract of the function might be changed in any release and/or the function can be
30978
- * removed completely.
30979
- */
30980
- publishGlobalUtil('ɵsetProfiler', setProfiler);
30981
- publishGlobalUtil('getDirectiveMetadata', getDirectiveMetadata$1);
30982
- publishGlobalUtil('getComponent', getComponent);
30983
- publishGlobalUtil('getContext', getContext);
30984
- publishGlobalUtil('getListeners', getListeners);
30985
- publishGlobalUtil('getOwningComponent', getOwningComponent);
30986
- publishGlobalUtil('getHostElement', getHostElement);
30987
- publishGlobalUtil('getInjector', getInjector);
30988
- publishGlobalUtil('getRootComponents', getRootComponents);
30989
- publishGlobalUtil('getDirectives', getDirectives);
30990
- publishGlobalUtil('applyChanges', applyChanges);
30949
+ for (const [methodName, method] of Object.entries(globalUtilsFunctions)) {
30950
+ publishGlobalUtil(methodName, method);
30951
+ }
30991
30952
  }
30992
30953
  }
30993
30954
  /**
@@ -31002,13 +30963,8 @@ function publishGlobalUtil(name, fn) {
31002
30963
  // for typings for AngularJS (via `goog.provide('ng....')`).
31003
30964
  const w = _global;
31004
30965
  ngDevMode && assertDefined(fn, 'function not defined');
31005
- if (w) {
31006
- let container = w[GLOBAL_PUBLISH_EXPANDO_KEY];
31007
- if (!container) {
31008
- container = w[GLOBAL_PUBLISH_EXPANDO_KEY] = {};
31009
- }
31010
- container[name] = fn;
31011
- }
30966
+ w[GLOBAL_PUBLISH_EXPANDO_KEY] ??= {};
30967
+ w[GLOBAL_PUBLISH_EXPANDO_KEY][name] = fn;
31012
30968
  }
31013
30969
  }
31014
30970
 
@@ -31695,7 +31651,7 @@ class ApplicationRef {
31695
31651
  /** @internal */
31696
31652
  this._views = [];
31697
31653
  this.internalErrorHandler = inject(INTERNAL_APPLICATION_ERROR_HANDLER);
31698
- this.zoneIsStable = inject(ZONE_IS_STABLE_OBSERVABLE);
31654
+ this.afterRenderEffectManager = inject(AfterRenderEventManager);
31699
31655
  /**
31700
31656
  * Get a list of component types registered to this application.
31701
31657
  * This list is populated even before the component is created.
@@ -31708,8 +31664,7 @@ class ApplicationRef {
31708
31664
  /**
31709
31665
  * Returns an Observable that indicates when the application is stable or unstable.
31710
31666
  */
31711
- this.isStable = inject(InitialRenderPendingTasks)
31712
- .hasPendingTasks.pipe(switchMap(hasPendingTasks => hasPendingTasks ? of(false) : this.zoneIsStable), distinctUntilChanged());
31667
+ this.isStable = inject(PendingTasks).hasPendingTasks.pipe(map(pending => !pending));
31713
31668
  this._injector = inject(EnvironmentInjector);
31714
31669
  }
31715
31670
  /**
@@ -31767,10 +31722,12 @@ class ApplicationRef {
31767
31722
  const initStatus = this._injector.get(ApplicationInitStatus);
31768
31723
  if (!initStatus.done) {
31769
31724
  const standalone = !isComponentFactory && isStandalone(componentOrFactory);
31770
- const errorMessage = 'Cannot bootstrap as there are still asynchronous initializers running.' +
31771
- (standalone ? '' :
31772
- ' Bootstrap components in the `ngDoBootstrap` method of the root module.');
31773
- throw new RuntimeError(405 /* RuntimeErrorCode.ASYNC_INITIALIZERS_STILL_RUNNING */, (typeof ngDevMode === 'undefined' || ngDevMode) && errorMessage);
31725
+ const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) &&
31726
+ 'Cannot bootstrap as there are still asynchronous initializers running.' +
31727
+ (standalone ?
31728
+ '' :
31729
+ ' Bootstrap components in the `ngDoBootstrap` method of the root module.');
31730
+ throw new RuntimeError(405 /* RuntimeErrorCode.ASYNC_INITIALIZERS_STILL_RUNNING */, errorMessage);
31774
31731
  }
31775
31732
  let componentFactory;
31776
31733
  if (isComponentFactory) {
@@ -31831,6 +31788,18 @@ class ApplicationRef {
31831
31788
  this.internalErrorHandler(e);
31832
31789
  }
31833
31790
  finally {
31791
+ // Catch any `ExpressionChanged...` errors and report them to error handler like above
31792
+ try {
31793
+ const callbacksExecuted = this.afterRenderEffectManager.execute();
31794
+ if ((typeof ngDevMode === 'undefined' || ngDevMode) && callbacksExecuted) {
31795
+ for (let view of this._views) {
31796
+ view.checkNoChanges();
31797
+ }
31798
+ }
31799
+ }
31800
+ catch (e) {
31801
+ this.internalErrorHandler(e);
31802
+ }
31834
31803
  this._runningTick = false;
31835
31804
  }
31836
31805
  }
@@ -32013,8 +31982,17 @@ function internalProvideZoneChangeDetection(ngZoneFactory) {
32013
31982
  return () => ngZoneChangeDetectionScheduler.initialize();
32014
31983
  },
32015
31984
  },
31985
+ {
31986
+ provide: ENVIRONMENT_INITIALIZER,
31987
+ multi: true,
31988
+ useFactory: () => {
31989
+ const service = inject(ZoneStablePendingTask);
31990
+ return () => {
31991
+ service.initialize();
31992
+ };
31993
+ }
31994
+ },
32016
31995
  { provide: INTERNAL_APPLICATION_ERROR_HANDLER, useFactory: ngZoneApplicationErrorHandlerFactory },
32017
- { provide: ZONE_IS_STABLE_OBSERVABLE, useFactory: isStableFactory },
32018
31996
  ];
32019
31997
  }
32020
31998
  function ngZoneApplicationErrorHandlerFactory() {
@@ -32060,6 +32038,50 @@ function getNgZoneOptions(options) {
32060
32038
  shouldCoalesceRunChangeDetection: options?.runCoalescing ?? false,
32061
32039
  };
32062
32040
  }
32041
+ class ZoneStablePendingTask {
32042
+ constructor() {
32043
+ this.subscription = new Subscription();
32044
+ this.initialized = false;
32045
+ this.zone = inject(NgZone);
32046
+ this.pendingTasks = inject(PendingTasks);
32047
+ }
32048
+ initialize() {
32049
+ if (this.initialized) {
32050
+ return;
32051
+ }
32052
+ this.initialized = true;
32053
+ let task = null;
32054
+ if (!this.zone.isStable && !this.zone.hasPendingMacrotasks && !this.zone.hasPendingMicrotasks) {
32055
+ task = this.pendingTasks.add();
32056
+ }
32057
+ this.zone.runOutsideAngular(() => {
32058
+ this.subscription.add(this.zone.onStable.subscribe(() => {
32059
+ NgZone.assertNotInAngularZone();
32060
+ // Check whether there are no pending macro/micro tasks in the next tick
32061
+ // to allow for NgZone to update the state.
32062
+ queueMicrotask(() => {
32063
+ if (task !== null && !this.zone.hasPendingMacrotasks && !this.zone.hasPendingMicrotasks) {
32064
+ this.pendingTasks.remove(task);
32065
+ task = null;
32066
+ }
32067
+ });
32068
+ }));
32069
+ });
32070
+ this.subscription.add(this.zone.onUnstable.subscribe(() => {
32071
+ NgZone.assertInAngularZone();
32072
+ task ??= this.pendingTasks.add();
32073
+ }));
32074
+ }
32075
+ ngOnDestroy() {
32076
+ this.subscription.unsubscribe();
32077
+ }
32078
+ static { this.ɵfac = function ZoneStablePendingTask_Factory(t) { return new (t || ZoneStablePendingTask)(); }; }
32079
+ static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ZoneStablePendingTask, factory: ZoneStablePendingTask.ɵfac, providedIn: 'root' }); }
32080
+ }
32081
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ZoneStablePendingTask, [{
32082
+ type: Injectable,
32083
+ args: [{ providedIn: 'root' }]
32084
+ }], null, null); })();
32063
32085
 
32064
32086
  /**
32065
32087
  * Work out the locale from the potential global properties.
@@ -34022,6 +34044,49 @@ function internalCreateApplication(config) {
34022
34044
  }
34023
34045
  }
34024
34046
 
34047
+ class ChangeDetectionSchedulerImpl {
34048
+ constructor() {
34049
+ this.appRef = inject(ApplicationRef);
34050
+ this.taskService = inject(PendingTasks);
34051
+ this.pendingRenderTaskId = null;
34052
+ }
34053
+ notify() {
34054
+ if (this.pendingRenderTaskId !== null)
34055
+ return;
34056
+ this.pendingRenderTaskId = this.taskService.add();
34057
+ setTimeout(() => {
34058
+ try {
34059
+ if (!this.appRef.destroyed) {
34060
+ this.appRef.tick();
34061
+ }
34062
+ }
34063
+ finally {
34064
+ // If this is the last task, the service will synchronously emit a stable notification. If
34065
+ // there is a subscriber that then acts in a way that tries to notify the scheduler again,
34066
+ // we need to be able to respond to schedule a new change detection. Therefore, we should
34067
+ // clear the task ID before removing it from the pending tasks (or the tasks service should
34068
+ // not synchronously emit stable, similar to how Zone stableness only happens if it's still
34069
+ // stable after a microtask).
34070
+ const taskId = this.pendingRenderTaskId;
34071
+ this.pendingRenderTaskId = null;
34072
+ this.taskService.remove(taskId);
34073
+ }
34074
+ });
34075
+ }
34076
+ static { this.ɵfac = function ChangeDetectionSchedulerImpl_Factory(t) { return new (t || ChangeDetectionSchedulerImpl)(); }; }
34077
+ static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ChangeDetectionSchedulerImpl, factory: ChangeDetectionSchedulerImpl.ɵfac, providedIn: 'root' }); }
34078
+ }
34079
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ChangeDetectionSchedulerImpl, [{
34080
+ type: Injectable,
34081
+ args: [{ providedIn: 'root' }]
34082
+ }], null, null); })();
34083
+ function provideZonelessChangeDetection() {
34084
+ return makeEnvironmentProviders([
34085
+ { provide: ChangeDetectionScheduler, useExisting: ChangeDetectionSchedulerImpl },
34086
+ { provide: NgZone, useClass: NoopNgZone },
34087
+ ]);
34088
+ }
34089
+
34025
34090
  /**
34026
34091
  * Retrieves all defer blocks in a given LView.
34027
34092
  *
@@ -35074,5 +35139,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
35074
35139
  * Generated bundle index. Do not edit.
35075
35140
  */
35076
35141
 
35077
- 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, 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, afterNextRender, afterRender, asNativeElements, assertInInjectionContext, assertNotInReactiveContext, assertPlatform, booleanAttribute, computed, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, isDevMode, isSignal, isStandalone, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, numberAttribute, platformCore, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, runInInjectionContext, setTestabilityGetter, signal, untracked, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, AfterRenderEventManager as ɵAfterRenderEventManager, CONTAINER_HEADER_OFFSET as ɵCONTAINER_HEADER_OFFSET, 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, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_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, 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, ZoneAwareQueueingScheduler as ɵZoneAwareQueueingScheduler, _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, 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, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalAfterNextRender as ɵinternalAfterNextRender, internalCreateApplication as ɵinternalCreateApplication, 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, publishDefaultGlobalUtils$1 as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, 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, whenStable as ɵwhenStable, withDomHydration as ɵwithDomHydration, ɵɵ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, ɵɵ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, ɵɵ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, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵ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 };
35142
+ 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, 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, afterNextRender, afterRender, asNativeElements, assertInInjectionContext, assertNotInReactiveContext, assertPlatform, booleanAttribute, computed, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, isDevMode, isSignal, isStandalone, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, numberAttribute, platformCore, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, runInInjectionContext, setTestabilityGetter, signal, untracked, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, AfterRenderEventManager as ɵAfterRenderEventManager, CONTAINER_HEADER_OFFSET as ɵCONTAINER_HEADER_OFFSET, ChangeDetectionScheduler as ɵChangeDetectionScheduler, 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, 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, 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, ZoneAwareQueueingScheduler as ɵZoneAwareQueueingScheduler, _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, 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, getEnsureDirtyViewsAreAlwaysReachable as ɵgetEnsureDirtyViewsAreAlwaysReachable, 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, internalAfterNextRender as ɵinternalAfterNextRender, internalCreateApplication as ɵinternalCreateApplication, 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, provideZonelessChangeDetection as ɵprovideZonelessChangeDetection, 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, setEnsureDirtyViewsAreAlwaysReachable as ɵsetEnsureDirtyViewsAreAlwaysReachable, 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, whenStable as ɵwhenStable, withDomHydration as ɵwithDomHydration, ɵɵ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, ɵɵ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, ɵɵ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, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵ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 };
35078
35143
  //# sourceMappingURL=core.mjs.map