@angular/core 17.3.0-next.0 → 17.3.0-next.1

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 (33) hide show
  1. package/esm2022/src/application/application_ref.mjs +24 -11
  2. package/esm2022/src/cached_injector_service.mjs +49 -0
  3. package/esm2022/src/core_private_export.mjs +2 -1
  4. package/esm2022/src/defer/instructions.mjs +29 -3
  5. package/esm2022/src/defer/interfaces.mjs +1 -1
  6. package/esm2022/src/di/host_attribute_token.mjs +40 -0
  7. package/esm2022/src/di/index.mjs +2 -1
  8. package/esm2022/src/di/injector_compatibility.mjs +3 -1
  9. package/esm2022/src/is_internal.mjs +15 -0
  10. package/esm2022/src/render3/after_render_hooks.mjs +8 -5
  11. package/esm2022/src/render3/component_ref.mjs +1 -1
  12. package/esm2022/src/render3/queue_state_update.mjs +41 -0
  13. package/esm2022/src/render3/reactivity/computed.mjs +3 -1
  14. package/esm2022/src/render3/reactivity/effect.mjs +3 -1
  15. package/esm2022/src/render3/reactivity/signal.mjs +3 -1
  16. package/esm2022/src/version.mjs +1 -1
  17. package/esm2022/testing/src/logger.mjs +3 -3
  18. package/fesm2022/core.mjs +270 -109
  19. package/fesm2022/core.mjs.map +1 -1
  20. package/fesm2022/primitives/signals.mjs +1 -1
  21. package/fesm2022/rxjs-interop.mjs +1 -1
  22. package/fesm2022/testing.mjs +1 -1
  23. package/index.d.ts +96 -3
  24. package/package.json +1 -1
  25. package/primitives/signals/index.d.ts +1 -1
  26. package/rxjs-interop/index.d.ts +1 -1
  27. package/schematics/migrations/block-template-entities/bundle.js +2 -2
  28. package/schematics/migrations/block-template-entities/bundle.js.map +1 -1
  29. package/schematics/ng-generate/control-flow-migration/bundle.js +4 -4
  30. package/schematics/ng-generate/control-flow-migration/bundle.js.map +1 -1
  31. package/schematics/ng-generate/standalone-migration/bundle.js +5709 -3189
  32. package/schematics/ng-generate/standalone-migration/bundle.js.map +4 -4
  33. package/testing/index.d.ts +1 -1
package/fesm2022/core.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.3.0-next.0
2
+ * @license Angular v17.3.0-next.1
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -3918,6 +3918,8 @@ Please check that 1) the type for the parameter at index ${index} is correct and
3918
3918
  * @publicApi
3919
3919
  */
3920
3920
  function inject(token, flags = InjectFlags.Default) {
3921
+ // The `as any` here _shouldn't_ be necessary, but without it JSCompiler
3922
+ // throws a disambiguation error due to the multiple signatures.
3921
3923
  return ɵɵinject(token, convertToBitFlags(flags));
3922
3924
  }
3923
3925
  // Converts object-based DI flags (`InjectOptions`) to bit flags (`InjectFlags`).
@@ -7402,6 +7404,45 @@ class Injector {
7402
7404
  static { this.__NG_ELEMENT_ID__ = -1 /* InjectorMarkers.Injector */; }
7403
7405
  }
7404
7406
 
7407
+ /*!
7408
+ * @license
7409
+ * Copyright Google LLC All Rights Reserved.
7410
+ *
7411
+ * Use of this source code is governed by an MIT-style license that can be
7412
+ * found in the LICENSE file at https://angular.io/license
7413
+ */
7414
+ /**
7415
+ * Creates a token that can be used to inject static attributes of the host node.
7416
+ *
7417
+ * @usageNotes
7418
+ * ### Injecting an attribute that is known to exist
7419
+ * ```typescript
7420
+ * @Directive()
7421
+ * class MyDir {
7422
+ * attr: string = inject(new HostAttributeToken('some-attr'));
7423
+ * }
7424
+ * ```
7425
+ *
7426
+ * ### Optionally injecting an attribute
7427
+ * ```typescript
7428
+ * @Directive()
7429
+ * class MyDir {
7430
+ * attr: string | null = inject(new HostAttributeToken('some-attr'), {optional: true});
7431
+ * }
7432
+ * ```
7433
+ * @publicApi
7434
+ */
7435
+ class HostAttributeToken {
7436
+ constructor(attributeName) {
7437
+ this.attributeName = attributeName;
7438
+ /** @internal */
7439
+ this.__NG_ELEMENT_ID__ = () => ɵɵinjectAttribute(this.attributeName);
7440
+ }
7441
+ toString() {
7442
+ return `HostAttributeToken ${this.attributeName}`;
7443
+ }
7444
+ }
7445
+
7405
7446
  /**
7406
7447
  * @module
7407
7448
  * @description
@@ -13747,10 +13788,28 @@ function isSignal(value) {
13747
13788
  return typeof value === 'function' && value[SIGNAL$1] !== undefined;
13748
13789
  }
13749
13790
 
13791
+ const markedFeatures = new Set();
13792
+ // tslint:disable:ban
13793
+ /**
13794
+ * A guarded `performance.mark` for feature marking.
13795
+ *
13796
+ * This method exists because while all supported browser and node.js version supported by Angular
13797
+ * support performance.mark API. This is not the case for other environments such as JSDOM and
13798
+ * Cloudflare workers.
13799
+ */
13800
+ function performanceMarkFeature(feature) {
13801
+ if (markedFeatures.has(feature)) {
13802
+ return;
13803
+ }
13804
+ markedFeatures.add(feature);
13805
+ performance?.mark?.('mark_feature_usage', { detail: { feature } });
13806
+ }
13807
+
13750
13808
  /**
13751
13809
  * Create a computed `Signal` which derives a reactive value from an expression.
13752
13810
  */
13753
13811
  function computed(computation, options) {
13812
+ performanceMarkFeature('NgSignals');
13754
13813
  const getter = createComputed$1(computation);
13755
13814
  if (options?.equal) {
13756
13815
  getter[SIGNAL$1].equal = options.equal;
@@ -13777,6 +13836,7 @@ function ɵunwrapWritableSignal(value) {
13777
13836
  * Create a `Signal` that can be set or updated directly.
13778
13837
  */
13779
13838
  function signal(initialValue, options) {
13839
+ performanceMarkFeature('NgSignals');
13780
13840
  const signalFn = createSignal$1(initialValue);
13781
13841
  const node = signalFn[SIGNAL$1];
13782
13842
  if (options?.equal) {
@@ -15189,6 +15249,7 @@ class EffectHandle {
15189
15249
  * @developerPreview
15190
15250
  */
15191
15251
  function effect(effectFn, options) {
15252
+ performanceMarkFeature('NgSignals');
15192
15253
  ngDevMode &&
15193
15254
  assertNotInReactiveContext(effect, 'Call `effect` outside of a reactive context. For example, schedule the ' +
15194
15255
  'effect inside the component constructor.');
@@ -15221,23 +15282,6 @@ function effect(effectFn, options) {
15221
15282
  // clang-format off
15222
15283
  // clang-format on
15223
15284
 
15224
- const markedFeatures = new Set();
15225
- // tslint:disable:ban
15226
- /**
15227
- * A guarded `performance.mark` for feature marking.
15228
- *
15229
- * This method exists because while all supported browser and node.js version supported by Angular
15230
- * support performance.mark API. This is not the case for other environments such as JSDOM and
15231
- * Cloudflare workers.
15232
- */
15233
- function performanceMarkFeature(feature) {
15234
- if (markedFeatures.has(feature)) {
15235
- return;
15236
- }
15237
- markedFeatures.add(feature);
15238
- performance?.mark?.('mark_feature_usage', { detail: { feature } });
15239
- }
15240
-
15241
15285
  function noop(...args) {
15242
15286
  // Do nothing.
15243
15287
  }
@@ -15796,8 +15840,8 @@ const NOOP_AFTER_RENDER_REF = {
15796
15840
  function internalAfterNextRender(callback, options) {
15797
15841
  const injector = options?.injector ?? inject(Injector);
15798
15842
  // Similarly to the public `afterNextRender` function, an internal one
15799
- // is only invoked in a browser.
15800
- if (!isPlatformBrowser(injector))
15843
+ // is only invoked in a browser as long as the runOnServer option is not set.
15844
+ if (!options?.runOnServer && !isPlatformBrowser(injector))
15801
15845
  return;
15802
15846
  const afterRenderEventManager = injector.get(AfterRenderEventManager);
15803
15847
  afterRenderEventManager.internalCallbacks.push(callback);
@@ -16024,9 +16068,13 @@ class AfterRenderEventManager {
16024
16068
  this.internalCallbacks = [];
16025
16069
  }
16026
16070
  /**
16027
- * Executes callbacks. Returns `true` if any callbacks executed.
16071
+ * Executes internal and user-provided callbacks.
16028
16072
  */
16029
16073
  execute() {
16074
+ this.executeInternalCallbacks();
16075
+ this.handler?.execute();
16076
+ }
16077
+ executeInternalCallbacks() {
16030
16078
  // Note: internal callbacks power `internalAfterNextRender`. Since internal callbacks
16031
16079
  // are fairly trivial, they are kept separate so that `AfterRenderCallbackHandlerImpl`
16032
16080
  // can still be tree-shaken unless used by the application.
@@ -16035,7 +16083,6 @@ class AfterRenderEventManager {
16035
16083
  for (const callback of callbacks) {
16036
16084
  callback();
16037
16085
  }
16038
- this.handler?.execute();
16039
16086
  }
16040
16087
  ngOnDestroy() {
16041
16088
  this.handler?.destroy();
@@ -16742,7 +16789,7 @@ function createRootComponent(componentView, rootComponentDef, rootDirectives, ho
16742
16789
  function setRootNodeAttributes(hostRenderer, componentDef, hostRNode, rootSelectorOrNode) {
16743
16790
  if (rootSelectorOrNode) {
16744
16791
  // The placeholder will be replaced with the actual version at build time.
16745
- setUpAttributes(hostRenderer, hostRNode, ['ng-version', '17.3.0-next.0']);
16792
+ setUpAttributes(hostRenderer, hostRNode, ['ng-version', '17.3.0-next.1']);
16746
16793
  }
16747
16794
  else {
16748
16795
  // If host element is created as a part of this function call (i.e. `rootSelectorOrNode`
@@ -18606,81 +18653,6 @@ function ɵɵInputTransformsFeature(definition) {
18606
18653
  definition.inputTransforms = inputTransforms;
18607
18654
  }
18608
18655
 
18609
- /**
18610
- * The name of a field that Angular monkey-patches onto a component
18611
- * class to store a function that loads defer-loadable dependencies
18612
- * and applies metadata to a class.
18613
- */
18614
- const ASYNC_COMPONENT_METADATA_FN = '__ngAsyncComponentMetadataFn__';
18615
- /**
18616
- * If a given component has unresolved async metadata - returns a reference
18617
- * to a function that applies component metadata after resolving defer-loadable
18618
- * dependencies. Otherwise - this function returns `null`.
18619
- */
18620
- function getAsyncClassMetadataFn(type) {
18621
- const componentClass = type; // cast to `any`, so that we can read a monkey-patched field
18622
- return componentClass[ASYNC_COMPONENT_METADATA_FN] ?? null;
18623
- }
18624
- /**
18625
- * Handles the process of applying metadata info to a component class in case
18626
- * component template has defer blocks (thus some dependencies became deferrable).
18627
- *
18628
- * @param type Component class where metadata should be added
18629
- * @param dependencyLoaderFn Function that loads dependencies
18630
- * @param metadataSetterFn Function that forms a scope in which the `setClassMetadata` is invoked
18631
- */
18632
- function setClassMetadataAsync(type, dependencyLoaderFn, metadataSetterFn) {
18633
- const componentClass = type; // cast to `any`, so that we can monkey-patch it
18634
- componentClass[ASYNC_COMPONENT_METADATA_FN] = () => Promise.all(dependencyLoaderFn()).then(dependencies => {
18635
- metadataSetterFn(...dependencies);
18636
- // Metadata is now set, reset field value to indicate that this component
18637
- // can by used/compiled synchronously.
18638
- componentClass[ASYNC_COMPONENT_METADATA_FN] = null;
18639
- return dependencies;
18640
- });
18641
- return componentClass[ASYNC_COMPONENT_METADATA_FN];
18642
- }
18643
- /**
18644
- * Adds decorator, constructor, and property metadata to a given type via static metadata fields
18645
- * on the type.
18646
- *
18647
- * These metadata fields can later be read with Angular's `ReflectionCapabilities` API.
18648
- *
18649
- * Calls to `setClassMetadata` can be guarded by ngDevMode, resulting in the metadata assignments
18650
- * being tree-shaken away during production builds.
18651
- */
18652
- function setClassMetadata(type, decorators, ctorParameters, propDecorators) {
18653
- return noSideEffects(() => {
18654
- const clazz = type;
18655
- if (decorators !== null) {
18656
- if (clazz.hasOwnProperty('decorators') && clazz.decorators !== undefined) {
18657
- clazz.decorators.push(...decorators);
18658
- }
18659
- else {
18660
- clazz.decorators = decorators;
18661
- }
18662
- }
18663
- if (ctorParameters !== null) {
18664
- // Rather than merging, clobber the existing parameters. If other projects exist which
18665
- // use tsickle-style annotations and reflect over them in the same way, this could
18666
- // cause issues, but that is vanishingly unlikely.
18667
- clazz.ctorParameters = ctorParameters;
18668
- }
18669
- if (propDecorators !== null) {
18670
- // The property decorator objects are merged as it is possible different fields have
18671
- // different decorator types. Decorators on individual fields are not merged, as it's
18672
- // also incredibly unlikely that a field will be decorated both with an Angular
18673
- // decorator and a non-Angular decorator that's also been downleveled.
18674
- if (clazz.hasOwnProperty('propDecorators') && clazz.propDecorators !== undefined) {
18675
- clazz.propDecorators = { ...clazz.propDecorators, ...propDecorators };
18676
- }
18677
- else {
18678
- clazz.propDecorators = propDecorators;
18679
- }
18680
- }
18681
- });
18682
- }
18683
-
18684
18656
  /**
18685
18657
  * Represents an instance of an `NgModule` created by an `NgModuleFactory`.
18686
18658
  * Provides access to the `NgModule` instance and related objects.
@@ -18821,6 +18793,121 @@ function createEnvironmentInjector(providers, parent, debugName = null) {
18821
18793
  return adapter.injector;
18822
18794
  }
18823
18795
 
18796
+ /**
18797
+ * A service used by the framework to create and cache injector instances.
18798
+ *
18799
+ * This service is used to create a single injector instance for each defer
18800
+ * block definition, to avoid creating an injector for each defer block instance
18801
+ * of a certain type.
18802
+ */
18803
+ class CachedInjectorService {
18804
+ constructor() {
18805
+ this.cachedInjectors = new Map();
18806
+ }
18807
+ getOrCreateInjector(key, parentInjector, providers, debugName) {
18808
+ if (!this.cachedInjectors.has(key)) {
18809
+ const injector = providers.length > 0 ?
18810
+ createEnvironmentInjector(providers, parentInjector, debugName) :
18811
+ null;
18812
+ this.cachedInjectors.set(key, injector);
18813
+ }
18814
+ return this.cachedInjectors.get(key);
18815
+ }
18816
+ ngOnDestroy() {
18817
+ try {
18818
+ for (const injector of this.cachedInjectors.values()) {
18819
+ if (injector !== null) {
18820
+ injector.destroy();
18821
+ }
18822
+ }
18823
+ }
18824
+ finally {
18825
+ this.cachedInjectors.clear();
18826
+ }
18827
+ }
18828
+ /** @nocollapse */
18829
+ static { this.ɵprov = ɵɵdefineInjectable({
18830
+ token: CachedInjectorService,
18831
+ providedIn: 'environment',
18832
+ factory: () => new CachedInjectorService(),
18833
+ }); }
18834
+ }
18835
+
18836
+ /**
18837
+ * The name of a field that Angular monkey-patches onto a component
18838
+ * class to store a function that loads defer-loadable dependencies
18839
+ * and applies metadata to a class.
18840
+ */
18841
+ const ASYNC_COMPONENT_METADATA_FN = '__ngAsyncComponentMetadataFn__';
18842
+ /**
18843
+ * If a given component has unresolved async metadata - returns a reference
18844
+ * to a function that applies component metadata after resolving defer-loadable
18845
+ * dependencies. Otherwise - this function returns `null`.
18846
+ */
18847
+ function getAsyncClassMetadataFn(type) {
18848
+ const componentClass = type; // cast to `any`, so that we can read a monkey-patched field
18849
+ return componentClass[ASYNC_COMPONENT_METADATA_FN] ?? null;
18850
+ }
18851
+ /**
18852
+ * Handles the process of applying metadata info to a component class in case
18853
+ * component template has defer blocks (thus some dependencies became deferrable).
18854
+ *
18855
+ * @param type Component class where metadata should be added
18856
+ * @param dependencyLoaderFn Function that loads dependencies
18857
+ * @param metadataSetterFn Function that forms a scope in which the `setClassMetadata` is invoked
18858
+ */
18859
+ function setClassMetadataAsync(type, dependencyLoaderFn, metadataSetterFn) {
18860
+ const componentClass = type; // cast to `any`, so that we can monkey-patch it
18861
+ componentClass[ASYNC_COMPONENT_METADATA_FN] = () => Promise.all(dependencyLoaderFn()).then(dependencies => {
18862
+ metadataSetterFn(...dependencies);
18863
+ // Metadata is now set, reset field value to indicate that this component
18864
+ // can by used/compiled synchronously.
18865
+ componentClass[ASYNC_COMPONENT_METADATA_FN] = null;
18866
+ return dependencies;
18867
+ });
18868
+ return componentClass[ASYNC_COMPONENT_METADATA_FN];
18869
+ }
18870
+ /**
18871
+ * Adds decorator, constructor, and property metadata to a given type via static metadata fields
18872
+ * on the type.
18873
+ *
18874
+ * These metadata fields can later be read with Angular's `ReflectionCapabilities` API.
18875
+ *
18876
+ * Calls to `setClassMetadata` can be guarded by ngDevMode, resulting in the metadata assignments
18877
+ * being tree-shaken away during production builds.
18878
+ */
18879
+ function setClassMetadata(type, decorators, ctorParameters, propDecorators) {
18880
+ return noSideEffects(() => {
18881
+ const clazz = type;
18882
+ if (decorators !== null) {
18883
+ if (clazz.hasOwnProperty('decorators') && clazz.decorators !== undefined) {
18884
+ clazz.decorators.push(...decorators);
18885
+ }
18886
+ else {
18887
+ clazz.decorators = decorators;
18888
+ }
18889
+ }
18890
+ if (ctorParameters !== null) {
18891
+ // Rather than merging, clobber the existing parameters. If other projects exist which
18892
+ // use tsickle-style annotations and reflect over them in the same way, this could
18893
+ // cause issues, but that is vanishingly unlikely.
18894
+ clazz.ctorParameters = ctorParameters;
18895
+ }
18896
+ if (propDecorators !== null) {
18897
+ // The property decorator objects are merged as it is possible different fields have
18898
+ // different decorator types. Decorators on individual fields are not merged, as it's
18899
+ // also incredibly unlikely that a field will be decorated both with an Angular
18900
+ // decorator and a non-Angular decorator that's also been downleveled.
18901
+ if (clazz.hasOwnProperty('propDecorators') && clazz.propDecorators !== undefined) {
18902
+ clazz.propDecorators = { ...clazz.propDecorators, ...propDecorators };
18903
+ }
18904
+ else {
18905
+ clazz.propDecorators = propDecorators;
18906
+ }
18907
+ }
18908
+ });
18909
+ }
18910
+
18824
18911
  /*
18825
18912
  * This file exists to support compilation of @angular/core in Ivy mode.
18826
18913
  *
@@ -19920,6 +20007,7 @@ function ɵɵdefer(index, primaryTmplIndex, dependencyResolverFn, loadingTmplInd
19920
20007
  dependencyResolverFn: dependencyResolverFn ?? null,
19921
20008
  loadingState: DeferDependenciesLoadingState.NOT_STARTED,
19922
20009
  loadingPromise: null,
20010
+ providers: null,
19923
20011
  };
19924
20012
  enableTimerScheduling?.(tView, tDetails, placeholderConfigIndex, loadingConfigIndex);
19925
20013
  setTDeferBlockDetails(tView, adjustedIndex, tDetails);
@@ -20229,8 +20317,26 @@ function applyDeferBlockState(newState, lDetails, lContainer, tNode, hostLView)
20229
20317
  // represents a defer block, so always refer to the first one.
20230
20318
  const viewIndex = 0;
20231
20319
  removeLViewFromLContainer(lContainer, viewIndex);
20320
+ let injector;
20321
+ if (newState === DeferBlockState.Complete) {
20322
+ // When we render a defer block in completed state, there might be
20323
+ // newly loaded standalone components used within the block, which may
20324
+ // import NgModules with providers. In order to make those providers
20325
+ // available for components declared in that NgModule, we create an instance
20326
+ // of environment injector to host those providers and pass this injector
20327
+ // to the logic that creates a view.
20328
+ const tDetails = getTDeferBlockDetails(hostTView, tNode);
20329
+ const providers = tDetails.providers;
20330
+ if (providers && providers.length > 0) {
20331
+ const parentInjector = hostLView[INJECTOR$1];
20332
+ const parentEnvInjector = parentInjector.get(EnvironmentInjector);
20333
+ injector =
20334
+ parentEnvInjector.get(CachedInjectorService)
20335
+ .getOrCreateInjector(tDetails, parentEnvInjector, providers, ngDevMode ? 'DeferBlock Injector' : '');
20336
+ }
20337
+ }
20232
20338
  const dehydratedView = findMatchingDehydratedView(lContainer, activeBlockTNode.tView.ssrId);
20233
- const embeddedLView = createAndRenderEmbeddedLView(hostLView, activeBlockTNode, null, { dehydratedView });
20339
+ const embeddedLView = createAndRenderEmbeddedLView(hostLView, activeBlockTNode, null, { dehydratedView, injector });
20234
20340
  addLViewToLContainer(lContainer, embeddedLView, viewIndex, shouldAddViewToDom(activeBlockTNode, dehydratedView));
20235
20341
  markViewDirty(embeddedLView);
20236
20342
  }
@@ -20406,6 +20512,11 @@ function triggerResourceLoading(tDetails, lView, tNode) {
20406
20512
  if (directiveDefs.length > 0) {
20407
20513
  primaryBlockTView.directiveRegistry =
20408
20514
  addDepsToRegistry(primaryBlockTView.directiveRegistry, directiveDefs);
20515
+ // Extract providers from all NgModules imported by standalone components
20516
+ // used within this defer block.
20517
+ const directiveTypes = directiveDefs.map(def => def.type);
20518
+ const providers = internalImportProvidersFrom(false, ...directiveTypes);
20519
+ tDetails.providers = providers;
20409
20520
  }
20410
20521
  if (pipeDefs.length > 0) {
20411
20522
  primaryBlockTView.pipeRegistry =
@@ -30674,7 +30785,7 @@ class Version {
30674
30785
  /**
30675
30786
  * @publicApi
30676
30787
  */
30677
- const VERSION = new Version('17.3.0-next.0');
30788
+ const VERSION = new Version('17.3.0-next.1');
30678
30789
 
30679
30790
  class Console {
30680
30791
  log(message) {
@@ -30694,6 +30805,14 @@ class Console {
30694
30805
  args: [{ providedIn: 'platform' }]
30695
30806
  }], null, null); })();
30696
30807
 
30808
+ /**
30809
+ * Used to patch behavior that needs to _temporarily_ be different between g3 and external.
30810
+ *
30811
+ * For example, make breaking changes ahead of the main branch targeting a major version.
30812
+ * Permanent differences between g3 and external should be configured by individual patches.
30813
+ */
30814
+ const isG3 = false;
30815
+
30697
30816
  /**
30698
30817
  * These are the data structures that our framework injector profiler will fill with data in order
30699
30818
  * to support DI debugging APIs.
@@ -32343,10 +32462,12 @@ class ApplicationRef {
32343
32462
  }
32344
32463
  detectChangesInAttachedViews() {
32345
32464
  let runs = 0;
32346
- do {
32465
+ const afterRenderEffectManager = this.afterRenderEffectManager;
32466
+ while (true) {
32347
32467
  if (runs === MAXIMUM_REFRESH_RERUNS) {
32348
32468
  throw new RuntimeError(103 /* RuntimeErrorCode.INFINITE_CHANGE_DETECTION */, ngDevMode &&
32349
- 'Changes in afterRender or afterNextRender hooks caused infinite change detection while refresh views.');
32469
+ 'Infinite change detection while refreshing application views. ' +
32470
+ 'Ensure afterRender or queueStateUpdate hooks are not continuously causing updates.');
32350
32471
  }
32351
32472
  const isFirstPass = runs === 0;
32352
32473
  for (let { _lView, notifyErrorHandler } of this._views) {
@@ -32356,9 +32477,20 @@ class ApplicationRef {
32356
32477
  }
32357
32478
  this.detectChangesInView(_lView, notifyErrorHandler, isFirstPass);
32358
32479
  }
32359
- this.afterRenderEffectManager.execute();
32360
32480
  runs++;
32361
- } while (this._views.some(({ _lView }) => shouldRecheckView(_lView)));
32481
+ afterRenderEffectManager.executeInternalCallbacks();
32482
+ // If we have a newly dirty view after running internal callbacks, recheck the views again
32483
+ // before running user-provided callbacks
32484
+ if (this._views.some(({ _lView }) => shouldRecheckView(_lView))) {
32485
+ continue;
32486
+ }
32487
+ afterRenderEffectManager.execute();
32488
+ // If after running all afterRender callbacks we have no more views that need to be refreshed,
32489
+ // we can break out of the loop
32490
+ if (!this._views.some(({ _lView }) => shouldRecheckView(_lView))) {
32491
+ break;
32492
+ }
32493
+ }
32362
32494
  }
32363
32495
  detectChangesInView(lView, notifyErrorHandler, isFirstPass) {
32364
32496
  let mode;
@@ -32507,10 +32639,9 @@ function whenStable(applicationRef) {
32507
32639
  return whenStablePromise;
32508
32640
  }
32509
32641
  function shouldRecheckView(view) {
32510
- return requiresRefreshOrTraversal(view);
32511
- // TODO(atscott): We need to support rechecking views marked dirty again in afterRender hooks
32512
- // in order to support the transition to zoneless. b/308152025
32513
- /* || !!(view[FLAGS] & LViewFlags.Dirty); */
32642
+ return requiresRefreshOrTraversal(view) ||
32643
+ // TODO(atscott): Remove isG3 check and make this a breaking change for v18
32644
+ (isG3 && !!(view[FLAGS] & 64 /* LViewFlags.Dirty */));
32514
32645
  }
32515
32646
 
32516
32647
  /**
@@ -34530,6 +34661,36 @@ function setAlternateWeakRefImpl(impl) {
34530
34661
  // TODO: remove this function
34531
34662
  }
34532
34663
 
34664
+ /**
34665
+ * Queue a state update to be performed asynchronously.
34666
+ *
34667
+ * This is useful to safely update application state that is used in an expression that was already
34668
+ * checked during change detection. This defers the update until later and prevents
34669
+ * `ExpressionChangedAfterItHasBeenChecked` errors. Using signals for state is recommended instead,
34670
+ * but it's not always immediately possible to change the state to a signal because it would be a
34671
+ * breaking change. When the callback updates state used in an expression, this needs to be
34672
+ * accompanied by an explicit notification to the framework that something has changed (i.e.
34673
+ * updating a signal or calling `ChangeDetectorRef.markForCheck()`) or may still cause
34674
+ * `ExpressionChangedAfterItHasBeenChecked` in dev mode or fail to synchronize the state to the DOM
34675
+ * in production.
34676
+ */
34677
+ function queueStateUpdate(callback, options) {
34678
+ !options && assertInInjectionContext(queueStateUpdate);
34679
+ const injector = options?.injector ?? inject(Injector);
34680
+ const appRef = injector.get(ApplicationRef);
34681
+ let executed = false;
34682
+ const runCallbackOnce = () => {
34683
+ if (executed || appRef.destroyed)
34684
+ return;
34685
+ executed = true;
34686
+ callback();
34687
+ };
34688
+ internalAfterNextRender(runCallbackOnce, { injector, runOnServer: true });
34689
+ queueMicrotask(() => {
34690
+ runCallbackOnce();
34691
+ });
34692
+ }
34693
+
34533
34694
  // A delay in milliseconds before the scan is run after onLoad, to avoid any
34534
34695
  // potential race conditions with other LCP-related functions. This delay
34535
34696
  // happens outside of the main JavaScript execution and will only effect the timing
@@ -35895,5 +36056,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
35895
36056
  * Generated bundle index. Do not edit.
35896
36057
  */
35897
36058
 
35898
- 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, contentChild, contentChildren, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, input, isDevMode, isSignal, isStandalone, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, model, numberAttribute, platformCore, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, runInInjectionContext, setTestabilityGetter, signal, untracked, viewChild, viewChildren, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, AfterRenderEventManager as ɵAfterRenderEventManager, CONTAINER_HEADER_OFFSET as ɵCONTAINER_HEADER_OFFSET, ChangeDetectionScheduler as ɵChangeDetectionScheduler, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG as ɵDEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR as ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DeferBlockBehavior as ɵDeferBlockBehavior, DeferBlockState as ɵDeferBlockState, EffectScheduler as ɵEffectScheduler, IMAGE_CONFIG as ɵIMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS as ɵIMAGE_CONFIG_DEFAULTS, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, ɵINPUT_SIGNAL_BRAND_WRITE_TYPE, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, 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, _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, output as ɵoutput, patchComponentDefWithScope as ɵpatchComponentDefWithScope, performanceMarkFeature as ɵperformanceMarkFeature, provideZonelessChangeDetection as ɵprovideZonelessChangeDetection, readHydrationInfo as ɵreadHydrationInfo, registerLocaleData as ɵregisterLocaleData, renderDeferBlockState as ɵrenderDeferBlockState, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, restoreComponentResolutionQueue as ɵrestoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, ɵsetClassDebugInfo, setClassMetadata as ɵsetClassMetadata, setClassMetadataAsync as ɵsetClassMetadataAsync, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, 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, ɵunwrapWritableSignal, whenStable as ɵwhenStable, withDomHydration as ɵwithDomHydration, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, InputFlags as ɵɵInputFlags, ɵɵInputTransformsFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵStandaloneFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵ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, ɵɵqueryAdvance, ɵɵ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, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateIframeAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
36059
+ 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, HostAttributeToken, 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, contentChild, contentChildren, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, input, isDevMode, isSignal, isStandalone, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, model, numberAttribute, platformCore, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, runInInjectionContext, setTestabilityGetter, signal, untracked, viewChild, viewChildren, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, AfterRenderEventManager as ɵAfterRenderEventManager, CONTAINER_HEADER_OFFSET as ɵCONTAINER_HEADER_OFFSET, ChangeDetectionScheduler as ɵChangeDetectionScheduler, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG as ɵDEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR as ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DeferBlockBehavior as ɵDeferBlockBehavior, DeferBlockState as ɵDeferBlockState, EffectScheduler as ɵEffectScheduler, IMAGE_CONFIG as ɵIMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS as ɵIMAGE_CONFIG_DEFAULTS, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, ɵINPUT_SIGNAL_BRAND_WRITE_TYPE, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, 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, _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, output as ɵoutput, patchComponentDefWithScope as ɵpatchComponentDefWithScope, performanceMarkFeature as ɵperformanceMarkFeature, provideZonelessChangeDetection as ɵprovideZonelessChangeDetection, queueStateUpdate as ɵqueueStateUpdate, readHydrationInfo as ɵreadHydrationInfo, registerLocaleData as ɵregisterLocaleData, renderDeferBlockState as ɵrenderDeferBlockState, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, restoreComponentResolutionQueue as ɵrestoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, ɵsetClassDebugInfo, setClassMetadata as ɵsetClassMetadata, setClassMetadataAsync as ɵsetClassMetadataAsync, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, 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, ɵunwrapWritableSignal, whenStable as ɵwhenStable, withDomHydration as ɵwithDomHydration, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, InputFlags as ɵɵInputFlags, ɵɵInputTransformsFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵStandaloneFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵ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, ɵɵqueryAdvance, ɵɵ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, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateIframeAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
35899
36060
  //# sourceMappingURL=core.mjs.map