@angular/core 17.0.0-next.3 → 17.0.0-next.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/esm2022/src/core_reactivity_export_internal.mjs +3 -3
  2. package/esm2022/src/di/initializer_token.mjs +1 -1
  3. package/esm2022/src/di/internal_tokens.mjs +1 -1
  4. package/esm2022/src/di/r3_injector.mjs +3 -4
  5. package/esm2022/src/metadata/directives.mjs +1 -1
  6. package/esm2022/src/metadata/resource_loading.mjs +27 -14
  7. package/esm2022/src/render3/after_render_hooks.mjs +32 -26
  8. package/esm2022/src/render3/component_ref.mjs +3 -4
  9. package/esm2022/src/render3/instructions/change_detection.mjs +3 -3
  10. package/esm2022/src/render3/interfaces/definition.mjs +1 -1
  11. package/esm2022/src/render3/interfaces/view.mjs +1 -1
  12. package/esm2022/src/render3/jit/directive.mjs +6 -2
  13. package/esm2022/src/render3/pipe.mjs +2 -1
  14. package/esm2022/src/render3/reactivity/effect.mjs +147 -44
  15. package/esm2022/src/signals/index.mjs +2 -2
  16. package/esm2022/src/signals/src/graph.mjs +4 -1
  17. package/esm2022/src/version.mjs +1 -1
  18. package/esm2022/testing/src/component_fixture.mjs +4 -2
  19. package/esm2022/testing/src/logger.mjs +3 -3
  20. package/esm2022/testing/src/test_bed.mjs +14 -3
  21. package/esm2022/testing/src/test_bed_compiler.mjs +3 -3
  22. package/fesm2022/core.mjs +303 -177
  23. package/fesm2022/core.mjs.map +1 -1
  24. package/fesm2022/rxjs-interop.mjs +1 -1
  25. package/fesm2022/testing.mjs +19 -6
  26. package/fesm2022/testing.mjs.map +1 -1
  27. package/index.d.ts +59 -18
  28. package/package.json +1 -1
  29. package/rxjs-interop/index.d.ts +1 -1
  30. package/schematics/ng-generate/standalone-migration/bundle.js +81 -157
  31. package/schematics/ng-generate/standalone-migration/bundle.js.map +3 -3
  32. package/testing/index.d.ts +10 -2
package/fesm2022/core.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.0.0-next.3
2
+ * @license Angular v17.0.0-next.4
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -2304,6 +2304,9 @@ function setActiveConsumer(consumer) {
2304
2304
  activeConsumer = consumer;
2305
2305
  return prev;
2306
2306
  }
2307
+ function isInNotificationPhase() {
2308
+ return inNotificationPhase;
2309
+ }
2307
2310
  const REACTIVE_NODE = {
2308
2311
  version: 0,
2309
2312
  dirty: false,
@@ -5861,19 +5864,32 @@ function resolveComponentResources(resourceResolver) {
5861
5864
  component.template = template;
5862
5865
  }));
5863
5866
  }
5864
- const styleUrls = component.styleUrls;
5865
- const styles = component.styles || (component.styles = []);
5866
- const styleOffset = component.styles.length;
5867
- styleUrls && styleUrls.forEach((styleUrl, index) => {
5868
- styles.push(''); // pre-allocate array.
5869
- promises.push(cachedResourceResolve(styleUrl).then((style) => {
5870
- styles[styleOffset + index] = style;
5871
- styleUrls.splice(styleUrls.indexOf(styleUrl), 1);
5872
- if (styleUrls.length == 0) {
5873
- component.styleUrls = undefined;
5874
- }
5867
+ const styles = typeof component.styles === 'string' ? [component.styles] : (component.styles || []);
5868
+ component.styles = styles;
5869
+ if (component.styleUrl && component.styleUrls?.length) {
5870
+ throw new Error('@Component cannot define both `styleUrl` and `styleUrls`. ' +
5871
+ 'Use `styleUrl` if the component has one stylesheet, or `styleUrls` if it has multiple');
5872
+ }
5873
+ else if (component.styleUrls?.length) {
5874
+ const styleOffset = component.styles.length;
5875
+ const styleUrls = component.styleUrls;
5876
+ component.styleUrls.forEach((styleUrl, index) => {
5877
+ styles.push(''); // pre-allocate array.
5878
+ promises.push(cachedResourceResolve(styleUrl).then((style) => {
5879
+ styles[styleOffset + index] = style;
5880
+ styleUrls.splice(styleUrls.indexOf(styleUrl), 1);
5881
+ if (styleUrls.length == 0) {
5882
+ component.styleUrls = undefined;
5883
+ }
5884
+ }));
5885
+ });
5886
+ }
5887
+ else if (component.styleUrl) {
5888
+ promises.push(cachedResourceResolve(component.styleUrl).then((style) => {
5889
+ styles.push(style);
5890
+ component.styleUrl = undefined;
5875
5891
  }));
5876
- });
5892
+ }
5877
5893
  const fullyResolved = Promise.all(promises).then(() => componentDefResolved(type));
5878
5894
  componentResolved.push(fullyResolved);
5879
5895
  });
@@ -5894,7 +5910,7 @@ function isComponentDefPendingResolution(type) {
5894
5910
  }
5895
5911
  function componentNeedsResolution(component) {
5896
5912
  return !!((component.templateUrl && !component.hasOwnProperty('template')) ||
5897
- component.styleUrls && component.styleUrls.length);
5913
+ (component.styleUrls && component.styleUrls.length) || component.styleUrl);
5898
5914
  }
5899
5915
  function clearResolutionOfComponentResourcesQueue() {
5900
5916
  const old = componentResourceResolutionQueue;
@@ -6368,8 +6384,7 @@ class R3Injector extends EnvironmentInjector {
6368
6384
  if (record != null && typeof record.value === 'string') {
6369
6385
  this.scopes.add(record.value);
6370
6386
  }
6371
- this.injectorDefTypes =
6372
- new Set(this.get(INJECTOR_DEF_TYPES.multi, EMPTY_ARRAY, InjectFlags.Self));
6387
+ this.injectorDefTypes = new Set(this.get(INJECTOR_DEF_TYPES, EMPTY_ARRAY, InjectFlags.Self));
6373
6388
  }
6374
6389
  /**
6375
6390
  * Destroy the injector and release references to every instance or provider associated with it.
@@ -6503,7 +6518,7 @@ class R3Injector extends EnvironmentInjector {
6503
6518
  prevInjectContext = setInjectorProfilerContext({ injector: this, token: null });
6504
6519
  }
6505
6520
  try {
6506
- const initializers = this.get(ENVIRONMENT_INITIALIZER.multi, EMPTY_ARRAY, InjectFlags.Self);
6521
+ const initializers = this.get(ENVIRONMENT_INITIALIZER, EMPTY_ARRAY, InjectFlags.Self);
6507
6522
  if (ngDevMode && !Array.isArray(initializers)) {
6508
6523
  throw new RuntimeError(-209 /* RuntimeErrorCode.INVALID_MULTI_PROVIDER */, 'Unexpected type of the `ENVIRONMENT_INITIALIZER` token value ' +
6509
6524
  `(expected an array, but got ${typeof initializers}). ` +
@@ -10834,7 +10849,7 @@ class Version {
10834
10849
  /**
10835
10850
  * @publicApi
10836
10851
  */
10837
- const VERSION = new Version('17.0.0-next.3');
10852
+ const VERSION = new Version('17.0.0-next.4');
10838
10853
 
10839
10854
  // This default value is when checking the hierarchy for a token.
10840
10855
  //
@@ -10855,6 +10870,66 @@ const VERSION = new Version('17.0.0-next.3');
10855
10870
  // - mod2.injector.get(token, default)
10856
10871
  const NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR = {};
10857
10872
 
10873
+ const ERROR_ORIGINAL_ERROR = 'ngOriginalError';
10874
+ function wrappedError(message, originalError) {
10875
+ const msg = `${message} caused by: ${originalError instanceof Error ? originalError.message : originalError}`;
10876
+ const error = Error(msg);
10877
+ error[ERROR_ORIGINAL_ERROR] = originalError;
10878
+ return error;
10879
+ }
10880
+ function getOriginalError(error) {
10881
+ return error[ERROR_ORIGINAL_ERROR];
10882
+ }
10883
+
10884
+ /**
10885
+ * Provides a hook for centralized exception handling.
10886
+ *
10887
+ * The default implementation of `ErrorHandler` prints error messages to the `console`. To
10888
+ * intercept error handling, write a custom exception handler that replaces this default as
10889
+ * appropriate for your app.
10890
+ *
10891
+ * @usageNotes
10892
+ * ### Example
10893
+ *
10894
+ * ```
10895
+ * class MyErrorHandler implements ErrorHandler {
10896
+ * handleError(error) {
10897
+ * // do something with the exception
10898
+ * }
10899
+ * }
10900
+ *
10901
+ * @NgModule({
10902
+ * providers: [{provide: ErrorHandler, useClass: MyErrorHandler}]
10903
+ * })
10904
+ * class MyModule {}
10905
+ * ```
10906
+ *
10907
+ * @publicApi
10908
+ */
10909
+ class ErrorHandler {
10910
+ constructor() {
10911
+ /**
10912
+ * @internal
10913
+ */
10914
+ this._console = console;
10915
+ }
10916
+ handleError(error) {
10917
+ const originalError = this._findOriginalError(error);
10918
+ this._console.error('ERROR', error);
10919
+ if (originalError) {
10920
+ this._console.error('ORIGINAL ERROR', originalError);
10921
+ }
10922
+ }
10923
+ /** @internal */
10924
+ _findOriginalError(error) {
10925
+ let e = error && getOriginalError(error);
10926
+ while (e && getOriginalError(e)) {
10927
+ e = getOriginalError(e);
10928
+ }
10929
+ return e || null;
10930
+ }
10931
+ }
10932
+
10858
10933
  /**
10859
10934
  * `DestroyRef` lets you set callbacks to run for any cleanup or destruction behavior.
10860
10935
  * The scope of this destruction depends on where `DestroyRef` is injected. If `DestroyRef`
@@ -11509,17 +11584,18 @@ function afterRender(callback, options) {
11509
11584
  }
11510
11585
  let destroy;
11511
11586
  const unregisterFn = injector.get(DestroyRef).onDestroy(() => destroy?.());
11512
- const manager = injector.get(AfterRenderEventManager);
11587
+ const afterRenderEventManager = injector.get(AfterRenderEventManager);
11513
11588
  // Lazily initialize the handler implementation, if necessary. This is so that it can be
11514
11589
  // tree-shaken if `afterRender` and `afterNextRender` aren't used.
11515
- const handler = manager.handler ??= new AfterRenderCallbackHandlerImpl();
11590
+ const callbackHandler = afterRenderEventManager.handler ??= new AfterRenderCallbackHandlerImpl();
11516
11591
  const ngZone = injector.get(NgZone);
11517
- const instance = new AfterRenderCallback(() => ngZone.runOutsideAngular(callback));
11592
+ const errorHandler = injector.get(ErrorHandler, null, { optional: true });
11593
+ const instance = new AfterRenderCallback(ngZone, errorHandler, callback);
11518
11594
  destroy = () => {
11519
- handler.unregister(instance);
11595
+ callbackHandler.unregister(instance);
11520
11596
  unregisterFn();
11521
11597
  };
11522
- handler.register(instance);
11598
+ callbackHandler.register(instance);
11523
11599
  return { destroy };
11524
11600
  }
11525
11601
  /**
@@ -11572,31 +11648,39 @@ function afterNextRender(callback, options) {
11572
11648
  }
11573
11649
  let destroy;
11574
11650
  const unregisterFn = injector.get(DestroyRef).onDestroy(() => destroy?.());
11575
- const manager = injector.get(AfterRenderEventManager);
11651
+ const afterRenderEventManager = injector.get(AfterRenderEventManager);
11576
11652
  // Lazily initialize the handler implementation, if necessary. This is so that it can be
11577
11653
  // tree-shaken if `afterRender` and `afterNextRender` aren't used.
11578
- const handler = manager.handler ??= new AfterRenderCallbackHandlerImpl();
11654
+ const callbackHandler = afterRenderEventManager.handler ??= new AfterRenderCallbackHandlerImpl();
11579
11655
  const ngZone = injector.get(NgZone);
11580
- const instance = new AfterRenderCallback(() => {
11656
+ const errorHandler = injector.get(ErrorHandler, null, { optional: true });
11657
+ const instance = new AfterRenderCallback(ngZone, errorHandler, () => {
11581
11658
  destroy?.();
11582
- ngZone.runOutsideAngular(callback);
11659
+ callback();
11583
11660
  });
11584
11661
  destroy = () => {
11585
- handler.unregister(instance);
11662
+ callbackHandler.unregister(instance);
11586
11663
  unregisterFn();
11587
11664
  };
11588
- handler.register(instance);
11665
+ callbackHandler.register(instance);
11589
11666
  return { destroy };
11590
11667
  }
11591
11668
  /**
11592
11669
  * A wrapper around a function to be used as an after render callback.
11593
11670
  */
11594
11671
  class AfterRenderCallback {
11595
- constructor(callback) {
11596
- this.callback = callback;
11672
+ constructor(zone, errorHandler, callbackFn) {
11673
+ this.zone = zone;
11674
+ this.errorHandler = errorHandler;
11675
+ this.callbackFn = callbackFn;
11597
11676
  }
11598
11677
  invoke() {
11599
- this.callback();
11678
+ try {
11679
+ this.zone.runOutsideAngular(this.callbackFn);
11680
+ }
11681
+ catch (err) {
11682
+ this.errorHandler?.handleError(err);
11683
+ }
11600
11684
  }
11601
11685
  }
11602
11686
  /**
@@ -11627,19 +11711,15 @@ class AfterRenderCallbackHandlerImpl {
11627
11711
  this.deferredCallbacks.delete(callback);
11628
11712
  }
11629
11713
  execute() {
11630
- try {
11631
- this.executingCallbacks = true;
11632
- for (const callback of this.callbacks) {
11633
- callback.invoke();
11634
- }
11714
+ this.executingCallbacks = true;
11715
+ for (const callback of this.callbacks) {
11716
+ callback.invoke();
11635
11717
  }
11636
- finally {
11637
- this.executingCallbacks = false;
11638
- for (const callback of this.deferredCallbacks) {
11639
- this.callbacks.add(callback);
11640
- }
11641
- this.deferredCallbacks.clear();
11718
+ this.executingCallbacks = false;
11719
+ for (const callback of this.deferredCallbacks) {
11720
+ this.callbacks.add(callback);
11642
11721
  }
11722
+ this.deferredCallbacks.clear();
11643
11723
  }
11644
11724
  destroy() {
11645
11725
  this.callbacks.clear();
@@ -11712,66 +11792,6 @@ function markViewDirty(lView) {
11712
11792
  return null;
11713
11793
  }
11714
11794
 
11715
- const ERROR_ORIGINAL_ERROR = 'ngOriginalError';
11716
- function wrappedError(message, originalError) {
11717
- const msg = `${message} caused by: ${originalError instanceof Error ? originalError.message : originalError}`;
11718
- const error = Error(msg);
11719
- error[ERROR_ORIGINAL_ERROR] = originalError;
11720
- return error;
11721
- }
11722
- function getOriginalError(error) {
11723
- return error[ERROR_ORIGINAL_ERROR];
11724
- }
11725
-
11726
- /**
11727
- * Provides a hook for centralized exception handling.
11728
- *
11729
- * The default implementation of `ErrorHandler` prints error messages to the `console`. To
11730
- * intercept error handling, write a custom exception handler that replaces this default as
11731
- * appropriate for your app.
11732
- *
11733
- * @usageNotes
11734
- * ### Example
11735
- *
11736
- * ```
11737
- * class MyErrorHandler implements ErrorHandler {
11738
- * handleError(error) {
11739
- * // do something with the exception
11740
- * }
11741
- * }
11742
- *
11743
- * @NgModule({
11744
- * providers: [{provide: ErrorHandler, useClass: MyErrorHandler}]
11745
- * })
11746
- * class MyModule {}
11747
- * ```
11748
- *
11749
- * @publicApi
11750
- */
11751
- class ErrorHandler {
11752
- constructor() {
11753
- /**
11754
- * @internal
11755
- */
11756
- this._console = console;
11757
- }
11758
- handleError(error) {
11759
- const originalError = this._findOriginalError(error);
11760
- this._console.error('ERROR', error);
11761
- if (originalError) {
11762
- this._console.error('ORIGINAL ERROR', originalError);
11763
- }
11764
- }
11765
- /** @internal */
11766
- _findOriginalError(error) {
11767
- let e = error && getOriginalError(error);
11768
- while (e && getOriginalError(e)) {
11769
- e = getOriginalError(e);
11770
- }
11771
- return e || null;
11772
- }
11773
- }
11774
-
11775
11795
  /**
11776
11796
  * Internal token that specifies whether DOM reuse logic
11777
11797
  * during hydration is enabled.
@@ -13480,74 +13500,6 @@ function renderChildComponents(hostLView, components) {
13480
13500
  }
13481
13501
  }
13482
13502
 
13483
- /**
13484
- * Tracks all effects registered within a given application and runs them via `flush`.
13485
- */
13486
- class EffectManager {
13487
- constructor() {
13488
- this.all = new Set();
13489
- this.queue = new Map();
13490
- }
13491
- create(effectFn, destroyRef, allowSignalWrites) {
13492
- const zone = (typeof Zone === 'undefined') ? null : Zone.current;
13493
- const w = watch(effectFn, (watch) => {
13494
- if (!this.all.has(watch)) {
13495
- return;
13496
- }
13497
- this.queue.set(watch, zone);
13498
- }, allowSignalWrites);
13499
- this.all.add(w);
13500
- // Effects start dirty.
13501
- w.notify();
13502
- let unregisterOnDestroy;
13503
- const destroy = () => {
13504
- w.cleanup();
13505
- unregisterOnDestroy?.();
13506
- this.all.delete(w);
13507
- this.queue.delete(w);
13508
- };
13509
- unregisterOnDestroy = destroyRef?.onDestroy(destroy);
13510
- return {
13511
- destroy,
13512
- };
13513
- }
13514
- flush() {
13515
- if (this.queue.size === 0) {
13516
- return;
13517
- }
13518
- for (const [watch, zone] of this.queue) {
13519
- this.queue.delete(watch);
13520
- if (zone) {
13521
- zone.run(() => watch.run());
13522
- }
13523
- else {
13524
- watch.run();
13525
- }
13526
- }
13527
- }
13528
- get isQueueEmpty() {
13529
- return this.queue.size === 0;
13530
- }
13531
- /** @nocollapse */
13532
- static { this.ɵprov = ɵɵdefineInjectable({
13533
- token: EffectManager,
13534
- providedIn: 'root',
13535
- factory: () => new EffectManager(),
13536
- }); }
13537
- }
13538
- /**
13539
- * Create a global `Effect` for the given reactive function.
13540
- *
13541
- * @developerPreview
13542
- */
13543
- function effect(effectFn, options) {
13544
- !options?.injector && assertInInjectionContext(effect);
13545
- const injector = options?.injector ?? inject(Injector);
13546
- const effectManager = injector.get(EffectManager);
13547
- const destroyRef = options?.manualCleanup !== true ? injector.get(DestroyRef) : null;
13548
- return effectManager.create(effectFn, destroyRef, !!options?.allowSignalWrites);
13549
- }
13550
-
13551
13503
  /**
13552
13504
  * Compute the static styling (class/style) from `TAttributes`.
13553
13505
  *
@@ -13680,7 +13632,7 @@ function detectChangesInternal(tView, lView, context, notifyErrorHandler = true)
13680
13632
  rendererFactory.end?.();
13681
13633
  // One final flush of the effects queue to catch any effects created in `ngAfterViewInit` or
13682
13634
  // other post-order hooks.
13683
- environment.effectManager?.flush();
13635
+ environment.inlineEffectRunner?.flush();
13684
13636
  // Invoke all callbacks registered via `after*Render`, if needed.
13685
13637
  afterRenderEventManager?.end();
13686
13638
  }
@@ -13722,7 +13674,7 @@ function refreshView(tView, lView, templateFn, context) {
13722
13674
  // Check no changes mode is a dev only mode used to verify that bindings have not changed
13723
13675
  // since they were assigned. We do not want to execute lifecycle hooks in that mode.
13724
13676
  const isInCheckNoChangesPass = ngDevMode && isInCheckNoChangesMode();
13725
- !isInCheckNoChangesPass && lView[ENVIRONMENT].effectManager?.flush();
13677
+ !isInCheckNoChangesPass && lView[ENVIRONMENT].inlineEffectRunner?.flush();
13726
13678
  enterView(lView);
13727
13679
  try {
13728
13680
  resetPreOrderHookFlags(lView);
@@ -14302,12 +14254,12 @@ class ComponentFactory extends ComponentFactory$1 {
14302
14254
  'Make sure that any injector used to create this component has a correct parent.');
14303
14255
  }
14304
14256
  const sanitizer = rootViewInjector.get(Sanitizer, null);
14305
- const effectManager = rootViewInjector.get(EffectManager, null);
14306
14257
  const afterRenderEventManager = rootViewInjector.get(AfterRenderEventManager, null);
14307
14258
  const environment = {
14308
14259
  rendererFactory,
14309
14260
  sanitizer,
14310
- effectManager,
14261
+ // We don't use inline effects (yet).
14262
+ inlineEffectRunner: null,
14311
14263
  afterRenderEventManager,
14312
14264
  };
14313
14265
  const hostRenderer = rendererFactory.createRenderer(null, this.componentDef);
@@ -26444,6 +26396,7 @@ function getPipeDef(name, registry) {
26444
26396
  if (ngDevMode) {
26445
26397
  throw new RuntimeError(-302 /* RuntimeErrorCode.PIPE_NOT_FOUND */, getPipeNotFoundErrorMessage(name));
26446
26398
  }
26399
+ return;
26447
26400
  }
26448
26401
  /**
26449
26402
  * Generates a helpful error message for the user when multiple pipes match the name.
@@ -28068,6 +28021,9 @@ function compileComponent(type, metadata) {
28068
28021
  if (metadata.styleUrls && metadata.styleUrls.length) {
28069
28022
  error.push(` - styleUrls: ${JSON.stringify(metadata.styleUrls)}`);
28070
28023
  }
28024
+ if (metadata.styleUrl) {
28025
+ error.push(` - styleUrl: ${metadata.styleUrl}`);
28026
+ }
28071
28027
  error.push(`Did you run and wait for 'resolveComponentResources()'?`);
28072
28028
  throw new Error(error.join('\n'));
28073
28029
  }
@@ -28100,7 +28056,8 @@ function compileComponent(type, metadata) {
28100
28056
  typeSourceSpan: compiler.createParseSourceSpan('Component', type.name, templateUrl),
28101
28057
  template: metadata.template || '',
28102
28058
  preserveWhitespaces,
28103
- styles: metadata.styles || EMPTY_ARRAY,
28059
+ styles: typeof metadata.styles === 'string' ? [metadata.styles] :
28060
+ (metadata.styles || EMPTY_ARRAY),
28104
28061
  animations: metadata.animations,
28105
28062
  // JIT components are always compiled against an empty set of `declarations`. Instead, the
28106
28063
  // `directiveDefs` and `pipeDefs` are updated at a later point:
@@ -32619,6 +32576,175 @@ function ɵɵngDeclarePipe(decl) {
32619
32576
  // clang-format off
32620
32577
  // clang-format on
32621
32578
 
32579
+ /**
32580
+ * Not public API, which guarantees `EffectScheduler` only ever comes from the application root
32581
+ * injector.
32582
+ */
32583
+ const APP_EFFECT_SCHEDULER = new InjectionToken('', {
32584
+ providedIn: 'root',
32585
+ factory: () => inject(EffectScheduler),
32586
+ });
32587
+ /**
32588
+ * A scheduler which manages the execution of effects.
32589
+ */
32590
+ class EffectScheduler {
32591
+ /** @nocollapse */
32592
+ static { this.ɵprov = ɵɵdefineInjectable({
32593
+ token: EffectScheduler,
32594
+ providedIn: 'root',
32595
+ factory: () => new ZoneAwareMicrotaskScheduler(),
32596
+ }); }
32597
+ }
32598
+ /**
32599
+ * An `EffectScheduler` which is capable of queueing scheduled effects per-zone, and flushing them
32600
+ * as an explicit operation.
32601
+ */
32602
+ class ZoneAwareQueueingScheduler {
32603
+ constructor() {
32604
+ this.queuedEffectCount = 0;
32605
+ this.queues = new Map();
32606
+ }
32607
+ scheduleEffect(handle) {
32608
+ const zone = handle.creationZone;
32609
+ if (!this.queues.has(zone)) {
32610
+ this.queues.set(zone, new Set());
32611
+ }
32612
+ const queue = this.queues.get(zone);
32613
+ if (queue.has(handle)) {
32614
+ return;
32615
+ }
32616
+ this.queuedEffectCount++;
32617
+ queue.add(handle);
32618
+ }
32619
+ /**
32620
+ * Run all scheduled effects.
32621
+ *
32622
+ * Execution order of effects within the same zone is guaranteed to be FIFO, but there is no
32623
+ * ordering guarantee between effects scheduled in different zones.
32624
+ */
32625
+ flush() {
32626
+ while (this.queuedEffectCount > 0) {
32627
+ for (const [zone, queue] of this.queues) {
32628
+ // `zone` here must be defined.
32629
+ if (zone === null) {
32630
+ this.flushQueue(queue);
32631
+ }
32632
+ else {
32633
+ zone.run(() => this.flushQueue(queue));
32634
+ }
32635
+ }
32636
+ }
32637
+ }
32638
+ flushQueue(queue) {
32639
+ for (const handle of queue) {
32640
+ queue.delete(handle);
32641
+ this.queuedEffectCount--;
32642
+ // TODO: what happens if this throws an error?
32643
+ handle.run();
32644
+ }
32645
+ }
32646
+ /** @nocollapse */
32647
+ static { this.ɵprov = ɵɵdefineInjectable({
32648
+ token: ZoneAwareQueueingScheduler,
32649
+ providedIn: 'root',
32650
+ factory: () => new ZoneAwareQueueingScheduler(),
32651
+ }); }
32652
+ }
32653
+ /**
32654
+ * A wrapper around `ZoneAwareQueueingScheduler` that schedules flushing via the microtask queue
32655
+ * when.
32656
+ */
32657
+ class ZoneAwareMicrotaskScheduler {
32658
+ constructor() {
32659
+ this.hasQueuedFlush = false;
32660
+ this.delegate = new ZoneAwareQueueingScheduler();
32661
+ this.flushTask = () => {
32662
+ // Leave `hasQueuedFlush` as `true` so we don't queue another microtask if more effects are
32663
+ // scheduled during flushing. The flush of the `ZoneAwareQueueingScheduler` delegate is
32664
+ // guaranteed to empty the queue.
32665
+ this.delegate.flush();
32666
+ this.hasQueuedFlush = false;
32667
+ // This is a variable initialization, not a method.
32668
+ // tslint:disable-next-line:semicolon
32669
+ };
32670
+ }
32671
+ scheduleEffect(handle) {
32672
+ this.delegate.scheduleEffect(handle);
32673
+ if (!this.hasQueuedFlush) {
32674
+ queueMicrotask(this.flushTask);
32675
+ this.hasQueuedFlush = true;
32676
+ }
32677
+ }
32678
+ }
32679
+ /**
32680
+ * Core reactive node for an Angular effect.
32681
+ *
32682
+ * `EffectHandle` combines the reactive graph's `Watch` base node for effects with the framework's
32683
+ * scheduling abstraction (`EffectScheduler`) as well as automatic cleanup via `DestroyRef` if
32684
+ * available/requested.
32685
+ */
32686
+ class EffectHandle {
32687
+ constructor(scheduler, effectFn, creationZone, destroyRef, errorHandler, allowSignalWrites) {
32688
+ this.scheduler = scheduler;
32689
+ this.effectFn = effectFn;
32690
+ this.creationZone = creationZone;
32691
+ this.errorHandler = errorHandler;
32692
+ this.alive = true;
32693
+ this.watcher =
32694
+ watch((onCleanup) => this.runEffect(onCleanup), () => this.schedule(), allowSignalWrites);
32695
+ this.unregisterOnDestroy = destroyRef?.onDestroy(() => this.destroy());
32696
+ }
32697
+ runEffect(onCleanup) {
32698
+ if (!this.alive) {
32699
+ // Running a destroyed effect is a no-op.
32700
+ return;
32701
+ }
32702
+ if (ngDevMode && isInNotificationPhase()) {
32703
+ throw new Error(`Schedulers cannot synchronously execute effects while scheduling.`);
32704
+ }
32705
+ try {
32706
+ this.effectFn(onCleanup);
32707
+ }
32708
+ catch (err) {
32709
+ this.errorHandler?.handleError(err);
32710
+ }
32711
+ }
32712
+ run() {
32713
+ this.watcher.run();
32714
+ }
32715
+ schedule() {
32716
+ if (!this.alive) {
32717
+ return;
32718
+ }
32719
+ this.scheduler.scheduleEffect(this);
32720
+ }
32721
+ notify() {
32722
+ this.watcher.notify();
32723
+ }
32724
+ destroy() {
32725
+ this.alive = false;
32726
+ this.watcher.cleanup();
32727
+ this.unregisterOnDestroy?.();
32728
+ // Note: if the effect is currently scheduled, it's not un-scheduled, and so the scheduler will
32729
+ // retain a reference to it. Attempting to execute it will be a no-op.
32730
+ }
32731
+ }
32732
+ /**
32733
+ * Create a global `Effect` for the given reactive function.
32734
+ *
32735
+ * @developerPreview
32736
+ */
32737
+ function effect(effectFn, options) {
32738
+ !options?.injector && assertInInjectionContext(effect);
32739
+ const injector = options?.injector ?? inject(Injector);
32740
+ const errorHandler = injector.get(ErrorHandler, null, { optional: true });
32741
+ const destroyRef = options?.manualCleanup !== true ? injector.get(DestroyRef) : null;
32742
+ const handle = new EffectHandle(injector.get(APP_EFFECT_SCHEDULER), effectFn, (typeof Zone === 'undefined') ? null : Zone.current, destroyRef, errorHandler, options?.allowSignalWrites ?? false);
32743
+ // Effects start dirty.
32744
+ handle.notify();
32745
+ return handle;
32746
+ }
32747
+
32622
32748
  // clang-format off
32623
32749
  // clang-format on
32624
32750
 
@@ -32809,5 +32935,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
32809
32935
  * Generated bundle index. Do not edit.
32810
32936
  */
32811
32937
 
32812
- export { ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory$1 as ComponentFactory, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, DestroyRef, Directive, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, Host, HostBinding, HostListener, INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, Pipe, PlatformRef, Query, QueryList, Renderer2, RendererFactory2, RendererStyleFlags2, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation$1 as ViewEncapsulation, ViewRef, afterNextRender, afterRender, asNativeElements, assertInInjectionContext, 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, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR as ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR, ENABLED_SSR_FEATURES as ɵENABLED_SSR_FEATURES, 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, _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, detectChanges as ɵdetectChanges, devModeEqual as ɵdevModeEqual, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, getAsyncClassMetadata as ɵgetAsyncClassMetadata, getDebugNode as ɵgetDebugNode, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, isBoundToModule as ɵisBoundToModule, isComponentDefPendingResolution as ɵisComponentDefPendingResolution, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, publishDefaultGlobalUtils$1 as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, registerLocaleData as ɵregisterLocaleData, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, restoreComponentResolutionQueue as ɵrestoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, 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, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, 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, ɵɵ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 };
32938
+ export { ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory$1 as ComponentFactory, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, DestroyRef, Directive, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, Host, HostBinding, HostListener, INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, Pipe, PlatformRef, Query, QueryList, Renderer2, RendererFactory2, RendererStyleFlags2, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation$1 as ViewEncapsulation, ViewRef, afterNextRender, afterRender, asNativeElements, assertInInjectionContext, 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, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR as ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR, ENABLED_SSR_FEATURES as ɵENABLED_SSR_FEATURES, EffectScheduler as ɵEffectScheduler, 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, detectChanges as ɵdetectChanges, devModeEqual as ɵdevModeEqual, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, getAsyncClassMetadata as ɵgetAsyncClassMetadata, getDebugNode as ɵgetDebugNode, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, isBoundToModule as ɵisBoundToModule, isComponentDefPendingResolution as ɵisComponentDefPendingResolution, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, publishDefaultGlobalUtils$1 as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, registerLocaleData as ɵregisterLocaleData, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, restoreComponentResolutionQueue as ɵrestoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, 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, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, 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, ɵɵ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 };
32813
32939
  //# sourceMappingURL=core.mjs.map