@angular/core 19.2.1 → 19.2.2

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 (50) hide show
  1. package/fesm2022/core.mjs +278 -1590
  2. package/fesm2022/core.mjs.map +1 -1
  3. package/fesm2022/primitives/di.mjs +1 -1
  4. package/fesm2022/primitives/di.mjs.map +1 -1
  5. package/fesm2022/primitives/event-dispatch.mjs +2 -589
  6. package/fesm2022/primitives/event-dispatch.mjs.map +1 -1
  7. package/fesm2022/primitives/signals.mjs +18 -8
  8. package/fesm2022/primitives/signals.mjs.map +1 -1
  9. package/fesm2022/rxjs-interop.mjs +7 -11
  10. package/fesm2022/rxjs-interop.mjs.map +1 -1
  11. package/fesm2022/testing.mjs +114 -129
  12. package/fesm2022/testing.mjs.map +1 -1
  13. package/fesm2022/weak_ref-DrMdAIDh.mjs +12 -0
  14. package/fesm2022/weak_ref-DrMdAIDh.mjs.map +1 -0
  15. package/index.d.ts +14205 -14988
  16. package/navigation_types.d-u4EOrrdZ.d.ts +121 -0
  17. package/package.json +1 -1
  18. package/primitives/di/index.d.ts +42 -50
  19. package/primitives/event-dispatch/index.d.ts +205 -309
  20. package/primitives/signals/index.d.ts +158 -195
  21. package/rxjs-interop/index.d.ts +72 -91
  22. package/schematics/bundles/{apply_import_manager-b8d6885d.js → apply_import_manager-C8MABThs.js} +12 -16
  23. package/schematics/bundles/{checker-89987c98.js → checker-DP-zos5Q.js} +2959 -1054
  24. package/schematics/bundles/cleanup-unused-imports.js +21 -27
  25. package/schematics/bundles/{compiler_host-2398e4ca.js → compiler_host-DzM2hemp.js} +19 -23
  26. package/schematics/bundles/control-flow-migration.js +81 -38
  27. package/schematics/bundles/explicit-standalone-flag.js +26 -32
  28. package/schematics/bundles/{imports-047fbbc8.js → imports-CIX-JgAN.js} +9 -14
  29. package/schematics/bundles/{index-e0b2e4a7.js → index-CEdDCtp8.js} +55 -59
  30. package/schematics/bundles/{index-10911843.js → index-CrKEaRj_.js} +4 -4
  31. package/schematics/bundles/inject-migration.js +121 -127
  32. package/schematics/bundles/{leading_space-f8944434.js → leading_space-D9nQ8UQC.js} +1 -1
  33. package/schematics/bundles/{migrate_ts_type_references-52508cd4.js → migrate_ts_type_references-C0325A9V.js} +106 -111
  34. package/schematics/bundles/{ng_decorators-b0d8b324.js → ng_decorators-DznZ5jMl.js} +4 -8
  35. package/schematics/bundles/{nodes-7758dbf6.js → nodes-B16H9JUd.js} +2 -6
  36. package/schematics/bundles/output-migration.js +39 -45
  37. package/schematics/bundles/pending-tasks.js +13 -19
  38. package/schematics/bundles/{program-0e1d4f10.js → program-CRYsSwIq.js} +768 -2633
  39. package/schematics/bundles/{project_paths-c48796dd.js → project_paths-BoRVJPjW.js} +25 -23
  40. package/schematics/bundles/{project_tsconfig_paths-b558633b.js → project_tsconfig_paths-CDVxT6Ov.js} +1 -1
  41. package/schematics/bundles/{property_name-ac18447e.js → property_name-BBwFuqMe.js} +3 -7
  42. package/schematics/bundles/provide-initializer.js +13 -19
  43. package/schematics/bundles/route-lazy-loading.js +35 -41
  44. package/schematics/bundles/self-closing-tags-migration.js +19 -25
  45. package/schematics/bundles/signal-input-migration.js +60 -67
  46. package/schematics/bundles/signal-queries-migration.js +47 -54
  47. package/schematics/bundles/signals.js +9 -11
  48. package/schematics/bundles/standalone-migration.js +178 -184
  49. package/testing/index.d.ts +289 -462
  50. package/weak_ref.d-ttyj86RV.d.ts +9 -0
package/fesm2022/core.mjs CHANGED
@@ -1,15 +1,17 @@
1
1
  /**
2
- * @license Angular v19.2.1
2
+ * @license Angular v19.2.2
3
3
  * (c) 2010-2025 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
6
6
 
7
- import { SIGNAL_NODE as SIGNAL_NODE$1, signalSetFn as signalSetFn$1, producerAccessed as producerAccessed$1, SIGNAL as SIGNAL$1, getActiveConsumer as getActiveConsumer$1, setActiveConsumer as setActiveConsumer$1, createSignal as createSignal$1, signalUpdateFn as signalUpdateFn$1, consumerDestroy as consumerDestroy$1, REACTIVE_NODE as REACTIVE_NODE$1, consumerBeforeComputation as consumerBeforeComputation$1, consumerAfterComputation as consumerAfterComputation$1, consumerPollProducersForChange as consumerPollProducersForChange$1, createComputed as createComputed$1, setThrowInvalidWriteToSignalError as setThrowInvalidWriteToSignalError$1, createWatch as createWatch$1, isInNotificationPhase as isInNotificationPhase$1, createLinkedSignal as createLinkedSignal$1, linkedSignalSetFn as linkedSignalSetFn$1, linkedSignalUpdateFn as linkedSignalUpdateFn$1 } from '@angular/core/primitives/signals';
7
+ import { SIGNAL_NODE, signalSetFn, SIGNAL, producerAccessed, getActiveConsumer, setActiveConsumer, createSignal, signalUpdateFn, consumerDestroy, REACTIVE_NODE, consumerPollProducersForChange, consumerBeforeComputation, consumerAfterComputation, createComputed, setThrowInvalidWriteToSignalError, createWatch, isInNotificationPhase, createLinkedSignal, linkedSignalSetFn, linkedSignalUpdateFn } from '@angular/core/primitives/signals';
8
8
  export { SIGNAL as ɵSIGNAL } from '@angular/core/primitives/signals';
9
- import * as di from '@angular/core/primitives/di';
9
+ import { getCurrentInjector, NOT_FOUND as NOT_FOUND$1, setCurrentInjector } from '@angular/core/primitives/di';
10
+ export { setCurrentInjector as ɵsetCurrentInjector } from '@angular/core/primitives/di';
10
11
  import { BehaviorSubject, Subject, Subscription } from 'rxjs';
11
- import { Attribute as Attribute$1, clearAppScopedEarlyEventContract, EventContract, EventContractContainer, getAppScopedQueuedEventInfos, EventDispatcher, registerDispatcher, isEarlyEventType, isCaptureEventType, EventPhase } from '@angular/core/primitives/event-dispatch';
12
+ import { Attribute as Attribute$1, clearAppScopedEarlyEventContract, EventContract, EventContractContainer, getAppScopedQueuedEventInfos, EventDispatcher, registerDispatcher, EventPhase, isEarlyEventType, isCaptureEventType } from '@angular/core/primitives/event-dispatch';
12
13
  import { map } from 'rxjs/operators';
14
+ export { s as ɵsetAlternateWeakRefImpl } from './weak_ref-DrMdAIDh.mjs';
13
15
 
14
16
  /**
15
17
  * Base URL for the error details page.
@@ -22,7 +24,7 @@ const ERROR_DETAILS_PAGE_BASE_URL = 'https://angular.dev/errors';
22
24
  /**
23
25
  * URL for the XSS security documentation.
24
26
  */
25
- const XSS_SECURITY_URL = 'https://g.co/ng/security#xss';
27
+ const XSS_SECURITY_URL = 'https://angular.dev/best-practices/security#preventing-cross-site-scripting-xss';
26
28
 
27
29
  /**
28
30
  * Class that represents a runtime error.
@@ -71,15 +73,14 @@ const REQUIRED_UNSET_VALUE = /* @__PURE__ */ Symbol('InputSignalNode#UNSET');
71
73
  // TODO: remove when https://github.com/evanw/esbuild/issues/3392 is resolved.
72
74
  const INPUT_SIGNAL_NODE = /* @__PURE__ */ (() => {
73
75
  return {
74
- ...SIGNAL_NODE$1,
76
+ ...SIGNAL_NODE,
75
77
  transformFn: undefined,
76
78
  applyValueToInputSignal(node, value) {
77
- signalSetFn$1(node, value);
79
+ signalSetFn(node, value);
78
80
  },
79
81
  };
80
82
  })();
81
83
 
82
- const ɵINPUT_SIGNAL_BRAND_READ_TYPE = /* @__PURE__ */ Symbol();
83
84
  const ɵINPUT_SIGNAL_BRAND_WRITE_TYPE = /* @__PURE__ */ Symbol();
84
85
  /**
85
86
  * Creates an input signal.
@@ -96,13 +97,13 @@ function createInputSignal(initialValue, options) {
96
97
  node.transformFn = options?.transform;
97
98
  function inputValueFn() {
98
99
  // Record that someone looked at this signal.
99
- producerAccessed$1(node);
100
+ producerAccessed(node);
100
101
  if (node.value === REQUIRED_UNSET_VALUE) {
101
102
  throw new RuntimeError(-950 /* RuntimeErrorCode.REQUIRED_INPUT_NO_VALUE */, ngDevMode && 'Input is required but no value is available yet.');
102
103
  }
103
104
  return node.value;
104
105
  }
105
- inputValueFn[SIGNAL$1] = node;
106
+ inputValueFn[SIGNAL] = node;
106
107
  if (ngDevMode) {
107
108
  inputValueFn.toString = () => `[Input Signal: ${inputValueFn()}]`;
108
109
  node.debugName = options?.debugName;
@@ -147,8 +148,6 @@ function makeDecorator(name, props, parentClass, additionalProcessing, typeFn) {
147
148
  ? cls[ANNOTATIONS]
148
149
  : Object.defineProperty(cls, ANNOTATIONS, { value: [] })[ANNOTATIONS];
149
150
  annotations.push(annotationInstance);
150
- if (additionalProcessing)
151
- additionalProcessing(cls);
152
151
  return cls;
153
152
  };
154
153
  }
@@ -196,9 +195,6 @@ function makeParamDecorator(name, props, parentClass) {
196
195
  return cls;
197
196
  }
198
197
  }
199
- if (parentClass) {
200
- ParamDecoratorFactory.prototype = Object.create(parentClass.prototype);
201
- }
202
198
  ParamDecoratorFactory.prototype.ngMetadataName = name;
203
199
  ParamDecoratorFactory.annotationCls = ParamDecoratorFactory;
204
200
  return ParamDecoratorFactory;
@@ -227,8 +223,6 @@ function makePropDecorator(name, props, parentClass, additionalProcessing) {
227
223
  : Object.defineProperty(constructor, PROP_METADATA, { value: {} })[PROP_METADATA];
228
224
  meta[name] = (meta.hasOwnProperty(name) && meta[name]) || [];
229
225
  meta[name].unshift(decoratorInstance);
230
- if (additionalProcessing)
231
- additionalProcessing(target, name, ...args);
232
226
  }
233
227
  return PropDecorator;
234
228
  }
@@ -469,6 +463,8 @@ function isForwardRef(fn) {
469
463
  }
470
464
 
471
465
  // The functions in this file verify that the assumptions we are making
466
+ // about state in an instruction are correct before implementing any logic.
467
+ // They are meant only to be called in dev mode as sanity checks.
472
468
  function assertNumber(actual, msg) {
473
469
  if (!(typeof actual === 'number')) {
474
470
  throwError(msg, typeof actual, 'number', '===');
@@ -529,11 +525,6 @@ function assertGreaterThanOrEqual(actual, expected, msg) {
529
525
  throwError(msg, actual, expected, '>=');
530
526
  }
531
527
  }
532
- function assertNotDefined(actual, msg) {
533
- if (actual != null) {
534
- throwError(msg, actual, null, '==');
535
- }
536
- }
537
528
  function assertDefined(actual, msg) {
538
529
  if (actual == null) {
539
530
  throwError(msg, actual, null, '!=');
@@ -566,7 +557,7 @@ function assertOneOf(value, ...validValues) {
566
557
  throwError(`Expected value to be one of ${JSON.stringify(validValues)} but was ${JSON.stringify(value)}.`);
567
558
  }
568
559
  function assertNotReactive(fn) {
569
- if (getActiveConsumer$1() !== null) {
560
+ if (getActiveConsumer() !== null) {
570
561
  throwError(`${fn}() should never be called in a reactive context.`);
571
562
  }
572
563
  }
@@ -1079,18 +1070,22 @@ function assertInjectImplementationNotEqual(fn) {
1079
1070
 
1080
1071
  const _THROW_IF_NOT_FOUND = {};
1081
1072
  const THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND;
1082
- function getCurrentInjector() {
1083
- return di.getCurrentInjector();
1084
- }
1085
- function setCurrentInjector(injector) {
1086
- return di.setCurrentInjector(injector);
1087
- }
1088
1073
  /*
1089
1074
  * Name of a property (that we patch onto DI decorator), which is used as an annotation of which
1090
1075
  * InjectFlag this decorator represents. This allows to avoid direct references to the DI decorators
1091
1076
  * in the code, thus making them tree-shakable.
1092
1077
  */
1093
1078
  const DI_DECORATOR_FLAG = '__NG_DI_FLAG__';
1079
+ class RetrievingInjector {
1080
+ injector;
1081
+ constructor(injector) {
1082
+ this.injector = injector;
1083
+ }
1084
+ retrieve(token, options) {
1085
+ const ngOptions = options;
1086
+ return this.injector.get(token, ngOptions.optional ? NOT_FOUND$1 : THROW_IF_NOT_FOUND, ngOptions);
1087
+ }
1088
+ }
1094
1089
  const NG_TEMP_TOKEN_PATH = 'ngTempTokenPath';
1095
1090
  const NG_TOKEN_PATH = 'ngTokenPath';
1096
1091
  const NEW_LINE = /\n/gm;
@@ -1099,13 +1094,21 @@ const SOURCE = '__source';
1099
1094
  function injectInjectorOnly(token, flags = InjectFlags.Default) {
1100
1095
  if (getCurrentInjector() === undefined) {
1101
1096
  throw new RuntimeError(-203 /* RuntimeErrorCode.MISSING_INJECTION_CONTEXT */, ngDevMode &&
1102
- `inject() must be called from an injection context such as a constructor, a factory function, a field initializer, or a function used with \`runInInjectionContext\`.`);
1097
+ `The \`${stringify(token)}\` token injection failed. \`inject()\` function must be called from an injection context such as a constructor, a factory function, a field initializer, or a function used with \`runInInjectionContext\`.`);
1103
1098
  }
1104
1099
  else if (getCurrentInjector() === null) {
1105
1100
  return injectRootLimpMode(token, undefined, flags);
1106
1101
  }
1107
1102
  else {
1108
- const value = getCurrentInjector().get(token, flags & InjectFlags.Optional ? null : undefined, flags);
1103
+ const currentInjector = getCurrentInjector();
1104
+ let injector;
1105
+ if (currentInjector instanceof RetrievingInjector) {
1106
+ injector = currentInjector.injector;
1107
+ }
1108
+ else {
1109
+ injector = currentInjector;
1110
+ }
1111
+ const value = injector.get(token, flags & InjectFlags.Optional ? null : undefined, flags);
1109
1112
  ngDevMode && emitInjectEvent(token, value, flags);
1110
1113
  return value;
1111
1114
  }
@@ -1438,27 +1441,6 @@ function arraySplice(array, index, count) {
1438
1441
  array.pop(); // shrink the array
1439
1442
  }
1440
1443
  }
1441
- /**
1442
- * Same as `Array.splice(index, 0, value)` but faster.
1443
- *
1444
- * `Array.splice()` is not fast because it has to allocate an array for the elements which were
1445
- * removed. This causes memory pressure and slows down code when most of the time we don't
1446
- * care about the deleted items array.
1447
- *
1448
- * @param array Array to splice.
1449
- * @param index Index in array where the `value` should be added.
1450
- * @param value Value to add to array.
1451
- */
1452
- function arrayInsert(array, index, value) {
1453
- ngDevMode && assertLessThanOrEqual(index, array.length, "Can't insert past array end.");
1454
- let end = array.length;
1455
- while (end > index) {
1456
- const previousEnd = end - 1;
1457
- array[end] = array[previousEnd];
1458
- end = previousEnd;
1459
- }
1460
- array[index] = value;
1461
- }
1462
1444
  /**
1463
1445
  * Same as `Array.splice2(index, 0, value1, value2)` but faster.
1464
1446
  *
@@ -1495,22 +1477,6 @@ function arrayInsert2(array, index, value1, value2) {
1495
1477
  array[index + 1] = value2;
1496
1478
  }
1497
1479
  }
1498
- /**
1499
- * Get an index of an `value` in a sorted `array`.
1500
- *
1501
- * NOTE:
1502
- * - This uses binary search algorithm for fast removals.
1503
- *
1504
- * @param array A sorted array to binary search.
1505
- * @param value The value to look for.
1506
- * @returns index of the value.
1507
- * - positive index if value found.
1508
- * - negative index if value not found. (`~index` to get the value where it should have been
1509
- * located)
1510
- */
1511
- function arrayIndexOfSorted(array, value) {
1512
- return _arrayIndexOfSorted(array, value, 0);
1513
- }
1514
1480
  /**
1515
1481
  * Set a `value` for a `key`.
1516
1482
  *
@@ -1559,24 +1525,6 @@ function keyValueArrayGet(keyValueArray, key) {
1559
1525
  function keyValueArrayIndexOf(keyValueArray, key) {
1560
1526
  return _arrayIndexOfSorted(keyValueArray, key, 1);
1561
1527
  }
1562
- /**
1563
- * Delete a `key` (and `value`) from the `KeyValueArray`.
1564
- *
1565
- * @param keyValueArray to modify.
1566
- * @param key The key to locate or delete (if exist).
1567
- * @returns index of where the key was (or should have been.)
1568
- * - positive (even) index if key found and deleted.
1569
- * - negative index if key not found. (`~index` (even) to get the index where it should have
1570
- * been.)
1571
- */
1572
- function keyValueArrayDelete(keyValueArray, key) {
1573
- const index = keyValueArrayIndexOf(keyValueArray, key);
1574
- if (index >= 0) {
1575
- // if we found it remove it.
1576
- arraySplice(keyValueArray, index, 2);
1577
- }
1578
- return index;
1579
- }
1580
1528
  /**
1581
1529
  * INTERNAL: Get an index of an `value` in a sorted `array` by grouping search by `shift`.
1582
1530
  *
@@ -2085,6 +2033,10 @@ class R3Injector extends EnvironmentInjector {
2085
2033
  }
2086
2034
  this.injectorDefTypes = new Set(this.get(INJECTOR_DEF_TYPES, EMPTY_ARRAY, InjectFlags.Self));
2087
2035
  }
2036
+ retrieve(token, options) {
2037
+ const ngOptions = options;
2038
+ return this.get(token, ngOptions.optional ? NOT_FOUND$1 : THROW_IF_NOT_FOUND, ngOptions);
2039
+ }
2088
2040
  /**
2089
2041
  * Destroy the injector and release references to every instance or provider associated with it.
2090
2042
  *
@@ -2095,7 +2047,7 @@ class R3Injector extends EnvironmentInjector {
2095
2047
  assertNotDestroyed(this);
2096
2048
  // Set destroyed = true first, in case lifecycle hooks re-enter destroy().
2097
2049
  this._destroyed = true;
2098
- const prevConsumer = setActiveConsumer$1(null);
2050
+ const prevConsumer = setActiveConsumer(null);
2099
2051
  try {
2100
2052
  // Call all the lifecycle hooks.
2101
2053
  for (const service of this._ngOnDestroyHooks) {
@@ -2114,7 +2066,7 @@ class R3Injector extends EnvironmentInjector {
2114
2066
  this.records.clear();
2115
2067
  this._ngOnDestroyHooks.clear();
2116
2068
  this.injectorDefTypes.clear();
2117
- setActiveConsumer$1(prevConsumer);
2069
+ setActiveConsumer(prevConsumer);
2118
2070
  }
2119
2071
  }
2120
2072
  onDestroy(callback) {
@@ -2216,7 +2168,7 @@ class R3Injector extends EnvironmentInjector {
2216
2168
  }
2217
2169
  /** @internal */
2218
2170
  resolveInjectorInitializers() {
2219
- const prevConsumer = setActiveConsumer$1(null);
2171
+ const prevConsumer = setActiveConsumer(null);
2220
2172
  const previousInjector = setCurrentInjector(this);
2221
2173
  const previousInjectImplementation = setInjectImplementation(undefined);
2222
2174
  let prevInjectContext;
@@ -2239,7 +2191,7 @@ class R3Injector extends EnvironmentInjector {
2239
2191
  setCurrentInjector(previousInjector);
2240
2192
  setInjectImplementation(previousInjectImplementation);
2241
2193
  ngDevMode && setInjectorProfilerContext(prevInjectContext);
2242
- setActiveConsumer$1(prevConsumer);
2194
+ setActiveConsumer(prevConsumer);
2243
2195
  }
2244
2196
  }
2245
2197
  toString() {
@@ -2302,7 +2254,7 @@ class R3Injector extends EnvironmentInjector {
2302
2254
  this.records.set(token, record);
2303
2255
  }
2304
2256
  hydrate(token, record) {
2305
- const prevConsumer = setActiveConsumer$1(null);
2257
+ const prevConsumer = setActiveConsumer(null);
2306
2258
  try {
2307
2259
  if (record.value === CIRCULAR) {
2308
2260
  throwCyclicDependencyError(stringify(token));
@@ -2325,7 +2277,7 @@ class R3Injector extends EnvironmentInjector {
2325
2277
  return record.value;
2326
2278
  }
2327
2279
  finally {
2328
- setActiveConsumer$1(prevConsumer);
2280
+ setActiveConsumer(prevConsumer);
2329
2281
  }
2330
2282
  }
2331
2283
  injectableDefInScope(def) {
@@ -2487,14 +2439,19 @@ function forEachSingleProvider(providers, fn) {
2487
2439
  * @publicApi
2488
2440
  */
2489
2441
  function runInInjectionContext(injector, fn) {
2442
+ let internalInjector;
2490
2443
  if (injector instanceof R3Injector) {
2491
2444
  assertNotDestroyed(injector);
2445
+ internalInjector = injector;
2446
+ }
2447
+ else {
2448
+ internalInjector = new RetrievingInjector(injector);
2492
2449
  }
2493
2450
  let prevInjectorProfilerContext;
2494
2451
  if (ngDevMode) {
2495
2452
  prevInjectorProfilerContext = setInjectorProfilerContext({ injector, token: null });
2496
2453
  }
2497
- const prevInjector = setCurrentInjector(injector);
2454
+ const prevInjector = setCurrentInjector(internalInjector);
2498
2455
  const previousInjectImplementation = setInjectImplementation(undefined);
2499
2456
  try {
2500
2457
  return fn();
@@ -3004,9 +2961,6 @@ function assertNgModuleType(actual, msg = "Type passed in is not NgModuleType, i
3004
2961
  throwError(msg);
3005
2962
  }
3006
2963
  }
3007
- function assertCurrentTNodeIsParent(isParent) {
3008
- assertEqual(isParent, true, 'currentTNode should be a parent');
3009
- }
3010
2964
  function assertHasParent(tNode) {
3011
2965
  assertDefined(tNode, 'currentTNode should exist!');
3012
2966
  assertDefined(tNode.parent, 'currentTNode should have a parent');
@@ -3026,7 +2980,7 @@ function assertFirstCreatePass(tView, errMessage) {
3026
2980
  assertEqual(tView.firstCreatePass, true, errMessage || 'Should only be called in first create pass.');
3027
2981
  }
3028
2982
  function assertFirstUpdatePass(tView, errMessage) {
3029
- assertEqual(tView.firstUpdatePass, true, errMessage || 'Should only be called in first update pass.');
2983
+ assertEqual(tView.firstUpdatePass, true, 'Should only be called in first update pass.');
3030
2984
  }
3031
2985
  /**
3032
2986
  * This is a basic sanity check that an object is probably a directive def. DirectiveDef is
@@ -3051,25 +3005,10 @@ function assertBetween(lower, upper, index) {
3051
3005
  }
3052
3006
  function assertProjectionSlots(lView, errMessage) {
3053
3007
  assertDefined(lView[DECLARATION_COMPONENT_VIEW], 'Component views should exist.');
3054
- assertDefined(lView[DECLARATION_COMPONENT_VIEW][T_HOST].projection, errMessage ||
3055
- 'Components with projection nodes (<ng-content>) must have projection slots defined.');
3008
+ assertDefined(lView[DECLARATION_COMPONENT_VIEW][T_HOST].projection, 'Components with projection nodes (<ng-content>) must have projection slots defined.');
3056
3009
  }
3057
3010
  function assertParentView(lView, errMessage) {
3058
- assertDefined(lView, errMessage || "Component views should always have a parent view (component's host view)");
3059
- }
3060
- function assertNoDuplicateDirectives$1(directives) {
3061
- // The array needs at least two elements in order to have duplicates.
3062
- if (directives.length < 2) {
3063
- return;
3064
- }
3065
- const seenDirectives = new Set();
3066
- for (const current of directives) {
3067
- if (seenDirectives.has(current)) {
3068
- throw new RuntimeError(309 /* RuntimeErrorCode.DUPLICATE_DIRECTIVE */, `Directive ${current.type.name} matches multiple times on the same element. ` +
3069
- `Directives can only match an element once.`);
3070
- }
3071
- seenDirectives.add(current);
3072
- }
3011
+ assertDefined(lView, "Component views should always have a parent view (component's host view)");
3073
3012
  }
3074
3013
  /**
3075
3014
  * This is a basic sanity check that the `injectorIndex` seems to point to what looks like a
@@ -3534,14 +3473,6 @@ let _checkNoChangesMode = 0; /* CheckNoChangesMode.Off */
3534
3473
  * @see detectChangesInViewWhileDirty
3535
3474
  */
3536
3475
  let _isRefreshingViews = false;
3537
- /**
3538
- * Returns true if the instruction state stack is empty.
3539
- *
3540
- * Intended to be called from tests only (tree shaken otherwise).
3541
- */
3542
- function specOnlyIsInstructionStateEmpty() {
3543
- return instructionState.lFrame.parent === null;
3544
- }
3545
3476
  function getElementDepthCount() {
3546
3477
  return instructionState.lFrame.elementDepthCount;
3547
3478
  }
@@ -4263,12 +4194,12 @@ function callHooks(currentView, arr, initPhase, currentNodeIndex) {
4263
4194
  */
4264
4195
  function callHookInternal(directive, hook) {
4265
4196
  profiler(4 /* ProfilerEvent.LifecycleHookStart */, directive, hook);
4266
- const prevConsumer = setActiveConsumer$1(null);
4197
+ const prevConsumer = setActiveConsumer(null);
4267
4198
  try {
4268
4199
  hook.call(directive);
4269
4200
  }
4270
4201
  finally {
4271
- setActiveConsumer$1(prevConsumer);
4202
+ setActiveConsumer(prevConsumer);
4272
4203
  profiler(5 /* ProfilerEvent.LifecycleHookEnd */, directive, hook);
4273
4204
  }
4274
4205
  }
@@ -4686,9 +4617,7 @@ function isAnimationProp(name) {
4686
4617
  * @param src `TAttributes` which should be appended to `dst`
4687
4618
  */
4688
4619
  function mergeHostAttrs(dst, src) {
4689
- if (src === null || src.length === 0) {
4690
- // do nothing
4691
- }
4620
+ if (src === null || src.length === 0) ;
4692
4621
  else if (dst === null || dst.length === 0) {
4693
4622
  // We have source, but dst is empty, just make a copy.
4694
4623
  dst = src.slice();
@@ -4701,9 +4630,7 @@ function mergeHostAttrs(dst, src) {
4701
4630
  srcMarker = item;
4702
4631
  }
4703
4632
  else {
4704
- if (srcMarker === 0 /* AttributeMarker.NamespaceURI */) {
4705
- // Case where we need to consume `key1`, `key2`, `value` items.
4706
- }
4633
+ if (srcMarker === 0 /* AttributeMarker.NamespaceURI */) ;
4707
4634
  else if (srcMarker === -1 /* AttributeMarker.ImplicitAttributes */ ||
4708
4635
  srcMarker === 2 /* AttributeMarker.Styles */) {
4709
4636
  // Case where we have to consume `key1` and `value` only.
@@ -4761,21 +4688,15 @@ function mergeHostAttribute(dst, marker, key1, key2, value) {
4761
4688
  }
4762
4689
  else if (item === key1) {
4763
4690
  // We already have same token
4764
- if (key2 === null) {
4691
+ {
4765
4692
  if (value !== null) {
4766
4693
  dst[i + 1] = value;
4767
4694
  }
4768
4695
  return;
4769
4696
  }
4770
- else if (key2 === dst[i + 1]) {
4771
- dst[i + 2] = value;
4772
- return;
4773
- }
4774
4697
  }
4775
4698
  // Increment counter.
4776
4699
  i++;
4777
- if (key2 !== null)
4778
- i++;
4779
4700
  if (value !== null)
4780
4701
  i++;
4781
4702
  }
@@ -4785,9 +4706,6 @@ function mergeHostAttribute(dst, marker, key1, key2, value) {
4785
4706
  i = markerInsertPosition + 1;
4786
4707
  }
4787
4708
  dst.splice(i++, 0, key1);
4788
- if (key2 !== null) {
4789
- dst.splice(i++, 0, key2);
4790
- }
4791
4709
  if (value !== null) {
4792
4710
  dst.splice(i++, 0, value);
4793
4711
  }
@@ -5999,29 +5917,6 @@ function getDevModeNodeName(tNode) {
5999
5917
  }
6000
5918
  }
6001
5919
 
6002
- /**
6003
- * @module
6004
- * @description
6005
- * The `di` module provides dependency injection container services.
6006
- */
6007
-
6008
- /**
6009
- * This file should not be necessary because node resolution should just default to `./di/index`!
6010
- *
6011
- * However it does not seem to work and it breaks:
6012
- * - //packages/animations/browser/test:test_web_chromium-local
6013
- * - //packages/compiler-cli/test:extract_i18n
6014
- * - //packages/compiler-cli/test:ngc
6015
- * - //packages/compiler-cli/test:perform_watch
6016
- * - //packages/compiler-cli/test/diagnostics:check_types
6017
- * - //packages/compiler-cli/test/transformers:test
6018
- * - //packages/compiler/test:test
6019
- * - //tools/public_api_guard:core_api
6020
- *
6021
- * Remove this file once the above is solved or wait until `ngc` is deleted and then it should be
6022
- * safe to delete this file.
6023
- */
6024
-
6025
5920
  const SCHEDULE_IN_ROOT_ZONE_DEFAULT = false;
6026
5921
 
6027
5922
  /**
@@ -6209,12 +6104,12 @@ class EventEmitter_ extends Subject {
6209
6104
  }
6210
6105
  }
6211
6106
  emit(value) {
6212
- const prevConsumer = setActiveConsumer$1(null);
6107
+ const prevConsumer = setActiveConsumer(null);
6213
6108
  try {
6214
6109
  super.next(value);
6215
6110
  }
6216
6111
  finally {
6217
- setActiveConsumer$1(prevConsumer);
6112
+ setActiveConsumer(prevConsumer);
6218
6113
  }
6219
6114
  }
6220
6115
  subscribe(observerOrNext, error, complete) {
@@ -6791,8 +6686,6 @@ function getNgZone(ngZoneToUse = 'zone.js', options) {
6791
6686
  return ngZoneToUse;
6792
6687
  }
6793
6688
 
6794
- // Public API for Zone
6795
-
6796
6689
  /**
6797
6690
  * Provides a hook for centralized exception handling.
6798
6691
  *
@@ -6893,14 +6786,15 @@ class OutputEmitterRef {
6893
6786
  /** Emits a new value to the output. */
6894
6787
  emit(value) {
6895
6788
  if (this.destroyed) {
6896
- throw new RuntimeError(953 /* RuntimeErrorCode.OUTPUT_REF_DESTROYED */, ngDevMode &&
6789
+ console.warn(formatRuntimeError(953 /* RuntimeErrorCode.OUTPUT_REF_DESTROYED */, ngDevMode &&
6897
6790
  'Unexpected emit for destroyed `OutputRef`. ' +
6898
- 'The owning directive/component is destroyed.');
6791
+ 'The owning directive/component is destroyed.'));
6792
+ return;
6899
6793
  }
6900
6794
  if (this.listeners === null) {
6901
6795
  return;
6902
6796
  }
6903
- const previousConsumer = setActiveConsumer$1(null);
6797
+ const previousConsumer = setActiveConsumer(null);
6904
6798
  try {
6905
6799
  for (const listenerFn of this.listeners) {
6906
6800
  try {
@@ -6912,7 +6806,7 @@ class OutputEmitterRef {
6912
6806
  }
6913
6807
  }
6914
6808
  finally {
6915
- setActiveConsumer$1(previousConsumer);
6809
+ setActiveConsumer(previousConsumer);
6916
6810
  }
6917
6811
  }
6918
6812
  }
@@ -7100,11 +6994,9 @@ function unwrapElementRef(value) {
7100
6994
  * Checks if the given `value` is a reactive `Signal`.
7101
6995
  */
7102
6996
  function isSignal(value) {
7103
- return typeof value === 'function' && value[SIGNAL$1] !== undefined;
6997
+ return typeof value === 'function' && value[SIGNAL] !== undefined;
7104
6998
  }
7105
6999
 
7106
- /** Symbol used distinguish `WritableSignal` from other non-writable signals and functions. */
7107
- const ɵWRITABLE_SIGNAL = /* @__PURE__ */ Symbol('WRITABLE_SIGNAL');
7108
7000
  /**
7109
7001
  * Utility function used during template type checking to extract the value from a `WritableSignal`.
7110
7002
  * @codeGenApi
@@ -7118,13 +7010,13 @@ function ɵunwrapWritableSignal(value) {
7118
7010
  * Create a `Signal` that can be set or updated directly.
7119
7011
  */
7120
7012
  function signal(initialValue, options) {
7121
- const signalFn = createSignal$1(initialValue);
7122
- const node = signalFn[SIGNAL$1];
7013
+ const signalFn = createSignal(initialValue);
7014
+ const node = signalFn[SIGNAL];
7123
7015
  if (options?.equal) {
7124
7016
  node.equal = options.equal;
7125
7017
  }
7126
- signalFn.set = (newValue) => signalSetFn$1(node, newValue);
7127
- signalFn.update = (updateFn) => signalUpdateFn$1(node, updateFn);
7018
+ signalFn.set = (newValue) => signalSetFn(node, newValue);
7019
+ signalFn.update = (updateFn) => signalUpdateFn(node, updateFn);
7128
7020
  signalFn.asReadonly = signalAsReadonlyFn.bind(signalFn);
7129
7021
  if (ngDevMode) {
7130
7022
  signalFn.toString = () => `[Signal: ${signalFn()}]`;
@@ -7133,10 +7025,10 @@ function signal(initialValue, options) {
7133
7025
  return signalFn;
7134
7026
  }
7135
7027
  function signalAsReadonlyFn() {
7136
- const node = this[SIGNAL$1];
7028
+ const node = this[SIGNAL];
7137
7029
  if (node.readonlyFn === undefined) {
7138
7030
  const readonlyFn = () => this();
7139
- readonlyFn[SIGNAL$1] = node;
7031
+ readonlyFn[SIGNAL] = node;
7140
7032
  node.readonlyFn = readonlyFn;
7141
7033
  }
7142
7034
  return node.readonlyFn;
@@ -7614,20 +7506,6 @@ function getComponentViewByInstance(componentInstance) {
7614
7506
  * This property will be monkey-patched on elements, components and directives.
7615
7507
  */
7616
7508
  const MONKEY_PATCH_KEY_NAME = '__ngContext__';
7617
- function attachLViewId(target, data) {
7618
- target[MONKEY_PATCH_KEY_NAME] = data[ID];
7619
- }
7620
- /**
7621
- * Returns the monkey-patch value data present on the target (which could be
7622
- * a component, directive or a DOM node).
7623
- */
7624
- function readLView(target) {
7625
- const data = readPatchedData(target);
7626
- if (isLView(data)) {
7627
- return data;
7628
- }
7629
- return data ? data.lView : null;
7630
- }
7631
7509
  /**
7632
7510
  * Assigns the given data to the given target (which could be a component,
7633
7511
  * directive or DOM node instance) using monkey-patching.
@@ -8093,20 +7971,6 @@ function getLocalRefs(target) {
8093
7971
  function getHostElement(componentOrDirective) {
8094
7972
  return getLContext(componentOrDirective).native;
8095
7973
  }
8096
- /**
8097
- * Retrieves the rendered text for a given component.
8098
- *
8099
- * This function retrieves the host element of a component and
8100
- * and then returns the `textContent` for that element. This implies
8101
- * that the text returned will include re-projected content of
8102
- * the component as well.
8103
- *
8104
- * @param component The component to return the content text for.
8105
- */
8106
- function getRenderedText(component) {
8107
- const hostElement = getHostElement(component);
8108
- return hostElement.textContent || '';
8109
- }
8110
7974
  /**
8111
7975
  * Retrieves a list of event listeners associated with a DOM element. The list does include host
8112
7976
  * listeners, but it does not include event listeners defined outside of the Angular context
@@ -8185,23 +8049,6 @@ function isDirectiveDefHack(obj) {
8185
8049
  obj.declaredInputs !== undefined &&
8186
8050
  obj.findHostDirectiveDefs !== undefined);
8187
8051
  }
8188
- /**
8189
- * Retrieve the component `LView` from component/element.
8190
- *
8191
- * NOTE: `LView` is a private and should not be leaked outside.
8192
- * Don't export this method to `ng.*` on window.
8193
- *
8194
- * @param target DOM element or component instance for which to retrieve the LView.
8195
- */
8196
- function getComponentLView(target) {
8197
- const lContext = getLContext(target);
8198
- const nodeIndx = lContext.nodeIndex;
8199
- const lView = lContext.lView;
8200
- ngDevMode && assertLView(lView);
8201
- const componentLView = lView[nodeIndx];
8202
- ngDevMode && assertLView(componentLView);
8203
- return componentLView;
8204
- }
8205
8052
  /** Asserts that a value is a DOM Element. */
8206
8053
  function assertDomElement(value) {
8207
8054
  if (typeof Element !== 'undefined' && !(value instanceof Element)) {
@@ -8417,7 +8264,7 @@ function makeStateKey(key) {
8417
8264
  }
8418
8265
  function initTransferState() {
8419
8266
  const transferState = new TransferState();
8420
- if (inject(PLATFORM_ID) === 'browser') {
8267
+ if (typeof ngServerMode === 'undefined' || !ngServerMode) {
8421
8268
  transferState.store = retrieveTransferredState(getDocument(), inject(APP_ID));
8422
8269
  }
8423
8270
  return transferState;
@@ -8544,7 +8391,6 @@ const DEFER_BLOCK_ID = 'di';
8544
8391
  const DEFER_BLOCK_STATE$1 = 's';
8545
8392
  const DEFER_PARENT_BLOCK_ID = 'p';
8546
8393
  const DEFER_HYDRATE_TRIGGERS = 't';
8547
- const DEFER_PREFETCH_TRIGGERS = 'pt';
8548
8394
 
8549
8395
  /**
8550
8396
  * Internal token that specifies whether DOM reuse logic
@@ -8625,7 +8471,7 @@ function performanceMarkFeature(feature) {
8625
8471
  function assertNotInReactiveContext(debugFn, extraContext) {
8626
8472
  // Taking a `Function` instead of a string name here prevents the un-minified name of the function
8627
8473
  // from being retained in the bundle regardless of minification.
8628
- if (getActiveConsumer$1() !== null) {
8474
+ if (getActiveConsumer() !== null) {
8629
8475
  throw new RuntimeError(-602 /* RuntimeErrorCode.ASSERTION_NOT_INSIDE_REACTIVE_CONTEXT */, ngDevMode &&
8630
8476
  `${debugFn.name}() cannot be called from within a reactive context.${extraContext ? ` ${extraContext}` : ''}`);
8631
8477
  }
@@ -9545,6 +9391,16 @@ class DehydratedBlockRegistry {
9545
9391
  contract = inject(JSACTION_EVENT_CONTRACT);
9546
9392
  add(blockId, info) {
9547
9393
  this.registry.set(blockId, info);
9394
+ // It's possible that hydration is queued that's waiting for the
9395
+ // resolution of a lazy loaded route. In this case, we ensure
9396
+ // the callback function is called to continue the hydration process
9397
+ // for the queued block set.
9398
+ if (this.awaitingCallbacks.has(blockId)) {
9399
+ const awaitingCallbacks = this.awaitingCallbacks.get(blockId);
9400
+ for (const cb of awaitingCallbacks) {
9401
+ cb();
9402
+ }
9403
+ }
9548
9404
  }
9549
9405
  get(blockId) {
9550
9406
  return this.registry.get(blockId) ?? null;
@@ -9559,6 +9415,7 @@ class DehydratedBlockRegistry {
9559
9415
  this.jsActionMap.delete(blockId);
9560
9416
  this.invokeTriggerCleanupFns(blockId);
9561
9417
  this.hydrating.delete(blockId);
9418
+ this.awaitingCallbacks.delete(blockId);
9562
9419
  }
9563
9420
  if (this.size === 0) {
9564
9421
  this.contract.instance?.cleanUp();
@@ -9586,6 +9443,13 @@ class DehydratedBlockRegistry {
9586
9443
  }
9587
9444
  // Blocks that are being hydrated.
9588
9445
  hydrating = new Map();
9446
+ // Blocks that are awaiting a defer instruction finish.
9447
+ awaitingCallbacks = new Map();
9448
+ awaitParentBlock(topmostParentBlock, callback) {
9449
+ const parentBlockAwaitCallbacks = this.awaitingCallbacks.get(topmostParentBlock) ?? [];
9450
+ parentBlockAwaitCallbacks.push(callback);
9451
+ this.awaitingCallbacks.set(topmostParentBlock, parentBlockAwaitCallbacks);
9452
+ }
9589
9453
  /** @nocollapse */
9590
9454
  static ɵprov = /** @pureOrBreakMyCode */ /* @__PURE__ */ ɵɵdefineInjectable({
9591
9455
  token: DehydratedBlockRegistry,
@@ -10014,7 +9878,6 @@ function getParentBlockHydrationQueue(deferBlockId, injector) {
10014
9878
  isTopMostDeferBlock = dehydratedBlockRegistry.has(currentBlockId);
10015
9879
  const hydratingParentBlock = dehydratedBlockRegistry.hydrating.get(currentBlockId);
10016
9880
  if (parentBlockPromise === null && hydratingParentBlock != null) {
10017
- // TODO: add an ngDevMode asset that `hydratingParentBlock.promise` exists and is of type Promise.
10018
9881
  parentBlockPromise = hydratingParentBlock.promise;
10019
9882
  break;
10020
9883
  }
@@ -10114,7 +9977,7 @@ function processBlockData(injector) {
10114
9977
  function refreshContentQueries(tView, lView) {
10115
9978
  const contentQueries = tView.contentQueries;
10116
9979
  if (contentQueries !== null) {
10117
- const prevConsumer = setActiveConsumer$1(null);
9980
+ const prevConsumer = setActiveConsumer(null);
10118
9981
  try {
10119
9982
  for (let i = 0; i < contentQueries.length; i += 2) {
10120
9983
  const queryStartIdx = contentQueries[i];
@@ -10130,24 +9993,24 @@ function refreshContentQueries(tView, lView) {
10130
9993
  }
10131
9994
  }
10132
9995
  finally {
10133
- setActiveConsumer$1(prevConsumer);
9996
+ setActiveConsumer(prevConsumer);
10134
9997
  }
10135
9998
  }
10136
9999
  }
10137
10000
  function executeViewQueryFn(flags, viewQueryFn, component) {
10138
10001
  ngDevMode && assertDefined(viewQueryFn, 'View queries function to execute must be defined.');
10139
10002
  setCurrentQueryIndex(0);
10140
- const prevConsumer = setActiveConsumer$1(null);
10003
+ const prevConsumer = setActiveConsumer(null);
10141
10004
  try {
10142
10005
  viewQueryFn(flags, component);
10143
10006
  }
10144
10007
  finally {
10145
- setActiveConsumer$1(prevConsumer);
10008
+ setActiveConsumer(prevConsumer);
10146
10009
  }
10147
10010
  }
10148
10011
  function executeContentQueries(tView, tNode, lView) {
10149
10012
  if (isContentQueryHost(tNode)) {
10150
- const prevConsumer = setActiveConsumer$1(null);
10013
+ const prevConsumer = setActiveConsumer(null);
10151
10014
  try {
10152
10015
  const start = tNode.directiveStart;
10153
10016
  const end = tNode.directiveEnd;
@@ -10162,7 +10025,7 @@ function executeContentQueries(tView, tNode, lView) {
10162
10025
  }
10163
10026
  }
10164
10027
  finally {
10165
- setActiveConsumer$1(prevConsumer);
10028
+ setActiveConsumer(prevConsumer);
10166
10029
  }
10167
10030
  }
10168
10031
  }
@@ -10258,16 +10121,6 @@ function getPolicy$1() {
10258
10121
  function trustedHTMLFromString(html) {
10259
10122
  return getPolicy$1()?.createHTML(html) || html;
10260
10123
  }
10261
- /**
10262
- * Unsafely promote a string to a TrustedScript, falling back to strings when
10263
- * Trusted Types are not available.
10264
- * @security In particular, it must be assured that the provided string will
10265
- * never cause an XSS vulnerability if used in a context that will be
10266
- * interpreted and executed as a script by a browser, e.g. when calling eval.
10267
- */
10268
- function trustedScriptFromString(script) {
10269
- return getPolicy$1()?.createScript(script) || script;
10270
- }
10271
10124
  /**
10272
10125
  * Unsafely promote a string to a TrustedScriptURL, falling back to strings
10273
10126
  * when Trusted Types are not available.
@@ -10280,54 +10133,6 @@ function trustedScriptFromString(script) {
10280
10133
  function trustedScriptURLFromString(url) {
10281
10134
  return getPolicy$1()?.createScriptURL(url) || url;
10282
10135
  }
10283
- /**
10284
- * Unsafely call the Function constructor with the given string arguments. It
10285
- * is only available in development mode, and should be stripped out of
10286
- * production code.
10287
- * @security This is a security-sensitive function; any use of this function
10288
- * must go through security review. In particular, it must be assured that it
10289
- * is only called from development code, as use in production code can lead to
10290
- * XSS vulnerabilities.
10291
- */
10292
- function newTrustedFunctionForDev(...args) {
10293
- if (typeof ngDevMode === 'undefined') {
10294
- throw new Error('newTrustedFunctionForDev should never be called in production');
10295
- }
10296
- if (!_global.trustedTypes) {
10297
- // In environments that don't support Trusted Types, fall back to the most
10298
- // straightforward implementation:
10299
- return new Function(...args);
10300
- }
10301
- // Chrome currently does not support passing TrustedScript to the Function
10302
- // constructor. The following implements the workaround proposed on the page
10303
- // below, where the Chromium bug is also referenced:
10304
- // https://github.com/w3c/webappsec-trusted-types/wiki/Trusted-Types-for-function-constructor
10305
- const fnArgs = args.slice(0, -1).join(',');
10306
- const fnBody = args[args.length - 1];
10307
- const body = `(function anonymous(${fnArgs}
10308
- ) { ${fnBody}
10309
- })`;
10310
- // Using eval directly confuses the compiler and prevents this module from
10311
- // being stripped out of JS binaries even if not used. The global['eval']
10312
- // indirection fixes that.
10313
- const fn = _global['eval'](trustedScriptFromString(body));
10314
- if (fn.bind === undefined) {
10315
- // Workaround for a browser bug that only exists in Chrome 83, where passing
10316
- // a TrustedScript to eval just returns the TrustedScript back without
10317
- // evaluating it. In that case, fall back to the most straightforward
10318
- // implementation:
10319
- return new Function(...args);
10320
- }
10321
- // To completely mimic the behavior of calling "new Function", two more
10322
- // things need to happen:
10323
- // 1. Stringifying the resulting function should return its source code
10324
- fn.toString = () => body;
10325
- // 2. When calling the resulting function, `this` should refer to `global`
10326
- return fn.bind(_global);
10327
- // When Trusted Types support in Function constructors is widely available,
10328
- // the implementation of this function can be simplified to:
10329
- // return new Function(...args.map(a => trustedScriptFromString(a)));
10330
- }
10331
10136
 
10332
10137
  /**
10333
10138
  * @fileoverview
@@ -12471,7 +12276,7 @@ var InputFlags;
12471
12276
  })(InputFlags || (InputFlags = {}));
12472
12277
 
12473
12278
  function writeToDirectiveInput(def, instance, publicName, value) {
12474
- const prevConsumer = setActiveConsumer$1(null);
12279
+ const prevConsumer = setActiveConsumer(null);
12475
12280
  try {
12476
12281
  if (ngDevMode) {
12477
12282
  if (!def.inputs.hasOwnProperty(publicName)) {
@@ -12492,7 +12297,7 @@ function writeToDirectiveInput(def, instance, publicName, value) {
12492
12297
  let inputSignalNode = null;
12493
12298
  if ((flags & InputFlags.SignalBased) !== 0) {
12494
12299
  const field = instance[privateName];
12495
- inputSignalNode = field[SIGNAL$1];
12300
+ inputSignalNode = field[SIGNAL];
12496
12301
  }
12497
12302
  // If there is a signal node and a transform, run it before potentially
12498
12303
  // delegating to features like `NgOnChanges`.
@@ -12511,7 +12316,7 @@ function writeToDirectiveInput(def, instance, publicName, value) {
12511
12316
  }
12512
12317
  }
12513
12318
  finally {
12514
- setActiveConsumer$1(prevConsumer);
12319
+ setActiveConsumer(prevConsumer);
12515
12320
  }
12516
12321
  }
12517
12322
 
@@ -12968,56 +12773,6 @@ function setAllInputsForProperty(tNode, tView, lView, publicName, value) {
12968
12773
  }
12969
12774
  return hasMatch;
12970
12775
  }
12971
- /**
12972
- * Sets an input value only on a specific directive and its host directives.
12973
- * @param tNode TNode on which the input is being set.
12974
- * @param tView Current TView
12975
- * @param lView `LView` which contains the directives.
12976
- * @param target Directive on which to set the input.
12977
- * @param publicName Public name of the input being set.
12978
- * @param value Value to set.
12979
- */
12980
- function setDirectiveInput(tNode, tView, lView, target, publicName, value) {
12981
- let hostIndex = null;
12982
- let hostDirectivesStart = null;
12983
- let hostDirectivesEnd = null;
12984
- let hasSet = false;
12985
- if (ngDevMode && !tNode.directiveToIndex?.has(target.type)) {
12986
- throw new Error(`Node does not have a directive with type ${target.type.name}`);
12987
- }
12988
- const data = tNode.directiveToIndex.get(target.type);
12989
- if (typeof data === 'number') {
12990
- hostIndex = data;
12991
- }
12992
- else {
12993
- [hostIndex, hostDirectivesStart, hostDirectivesEnd] = data;
12994
- }
12995
- if (hostDirectivesStart !== null &&
12996
- hostDirectivesEnd !== null &&
12997
- tNode.hostDirectiveInputs?.hasOwnProperty(publicName)) {
12998
- const hostDirectiveInputs = tNode.hostDirectiveInputs[publicName];
12999
- for (let i = 0; i < hostDirectiveInputs.length; i += 2) {
13000
- const index = hostDirectiveInputs[i];
13001
- if (index >= hostDirectivesStart && index <= hostDirectivesEnd) {
13002
- ngDevMode && assertIndexInRange(lView, index);
13003
- const def = tView.data[index];
13004
- const hostDirectivePublicName = hostDirectiveInputs[i + 1];
13005
- writeToDirectiveInput(def, lView[index], hostDirectivePublicName, value);
13006
- hasSet = true;
13007
- }
13008
- else if (index > hostDirectivesEnd) {
13009
- // Directives here are in ascending order so we can stop looking once we're past the range.
13010
- break;
13011
- }
13012
- }
13013
- }
13014
- if (hostIndex !== null) {
13015
- ngDevMode && assertIndexInRange(lView, hostIndex);
13016
- writeToDirectiveInput(target, lView[hostIndex], publicName, value);
13017
- hasSet = true;
13018
- }
13019
- return hasSet;
13020
- }
13021
12776
 
13022
12777
  function renderComponent(hostLView, componentHostIdx) {
13023
12778
  ngDevMode && assertEqual(isCreationMode(hostLView), true, 'Should be run in creation mode');
@@ -13126,7 +12881,7 @@ function renderView(tView, lView, context) {
13126
12881
  throw error;
13127
12882
  }
13128
12883
  finally {
13129
- lView[FLAGS] &= ~4 /* LViewFlags.CreationMode */;
12884
+ lView[FLAGS] &= -5 /* LViewFlags.CreationMode */;
13130
12885
  leaveView();
13131
12886
  }
13132
12887
  }
@@ -13138,7 +12893,7 @@ function renderChildComponents(hostLView, components) {
13138
12893
  }
13139
12894
 
13140
12895
  function createAndRenderEmbeddedLView(declarationLView, templateTNode, context, options) {
13141
- const prevConsumer = setActiveConsumer$1(null);
12896
+ const prevConsumer = setActiveConsumer(null);
13142
12897
  try {
13143
12898
  const embeddedTView = templateTNode.tView;
13144
12899
  ngDevMode && assertDefined(embeddedTView, 'TView must be defined for a template node.');
@@ -13159,7 +12914,7 @@ function createAndRenderEmbeddedLView(declarationLView, templateTNode, context,
13159
12914
  return embeddedLView;
13160
12915
  }
13161
12916
  finally {
13162
- setActiveConsumer$1(prevConsumer);
12917
+ setActiveConsumer(prevConsumer);
13163
12918
  }
13164
12919
  }
13165
12920
  /**
@@ -13404,7 +13159,7 @@ function cleanUpView(tView, lView) {
13404
13159
  if (isDestroyed(lView)) {
13405
13160
  return;
13406
13161
  }
13407
- const prevConsumer = setActiveConsumer$1(null);
13162
+ const prevConsumer = setActiveConsumer(null);
13408
13163
  try {
13409
13164
  // Usually the Attached flag is removed when the view is detached from its parent, however
13410
13165
  // if it's a root view, the flag won't be unset hence why we're also removing on destroy.
@@ -13415,7 +13170,7 @@ function cleanUpView(tView, lView) {
13415
13170
  // This also aligns with the ViewEngine behavior. It also means that the onDestroy hook is
13416
13171
  // really more of an "afterDestroy" hook if you think about it.
13417
13172
  lView[FLAGS] |= 256 /* LViewFlags.Destroyed */;
13418
- lView[REACTIVE_TEMPLATE_CONSUMER] && consumerDestroy$1(lView[REACTIVE_TEMPLATE_CONSUMER]);
13173
+ lView[REACTIVE_TEMPLATE_CONSUMER] && consumerDestroy(lView[REACTIVE_TEMPLATE_CONSUMER]);
13419
13174
  executeOnDestroys(tView, lView);
13420
13175
  processCleanups(tView, lView);
13421
13176
  // For component views only, the local renderer is destroyed at clean up time.
@@ -13440,7 +13195,7 @@ function cleanUpView(tView, lView) {
13440
13195
  unregisterLView(lView);
13441
13196
  }
13442
13197
  finally {
13443
- setActiveConsumer$1(prevConsumer);
13198
+ setActiveConsumer(prevConsumer);
13444
13199
  }
13445
13200
  }
13446
13201
  /** Removes listeners and unsubscribes from output subscriptions */
@@ -14047,7 +13802,7 @@ function maybeReturnReactiveLViewConsumer(consumer) {
14047
13802
  freeConsumers.push(consumer);
14048
13803
  }
14049
13804
  const REACTIVE_LVIEW_CONSUMER_NODE = {
14050
- ...REACTIVE_NODE$1,
13805
+ ...REACTIVE_NODE,
14051
13806
  consumerIsAlwaysLive: true,
14052
13807
  kind: 'template',
14053
13808
  consumerMarkedDirty: (node) => {
@@ -14075,7 +13830,7 @@ function getOrCreateTemporaryConsumer(lView) {
14075
13830
  return consumer;
14076
13831
  }
14077
13832
  const TEMPORARY_CONSUMER_NODE = {
14078
- ...REACTIVE_NODE$1,
13833
+ ...REACTIVE_NODE,
14079
13834
  consumerIsAlwaysLive: true,
14080
13835
  kind: 'template',
14081
13836
  consumerMarkedDirty: (node) => {
@@ -14242,9 +13997,9 @@ function refreshView(tView, lView, templateFn, context) {
14242
13997
  if (!isInCheckNoChangesPass) {
14243
13998
  if (viewShouldHaveReactiveConsumer(tView)) {
14244
13999
  currentConsumer = getOrBorrowReactiveLViewConsumer(lView);
14245
- prevConsumer = consumerBeforeComputation$1(currentConsumer);
14000
+ prevConsumer = consumerBeforeComputation(currentConsumer);
14246
14001
  }
14247
- else if (getActiveConsumer$1() === null) {
14002
+ else if (getActiveConsumer() === null) {
14248
14003
  // If the current view should not have a reactive consumer but we don't have an active consumer,
14249
14004
  // we still need to create a temporary consumer to track any signal reads in this template.
14250
14005
  // This is a rare case that can happen with `viewContainerRef.createEmbeddedView(...).detectChanges()`.
@@ -14253,10 +14008,10 @@ function refreshView(tView, lView, templateFn, context) {
14253
14008
  // the temporary one.
14254
14009
  returnConsumerToPool = false;
14255
14010
  currentConsumer = getOrCreateTemporaryConsumer(lView);
14256
- prevConsumer = consumerBeforeComputation$1(currentConsumer);
14011
+ prevConsumer = consumerBeforeComputation(currentConsumer);
14257
14012
  }
14258
14013
  else if (lView[REACTIVE_TEMPLATE_CONSUMER]) {
14259
- consumerDestroy$1(lView[REACTIVE_TEMPLATE_CONSUMER]);
14014
+ consumerDestroy(lView[REACTIVE_TEMPLATE_CONSUMER]);
14260
14015
  lView[REACTIVE_TEMPLATE_CONSUMER] = null;
14261
14016
  }
14262
14017
  }
@@ -14385,7 +14140,7 @@ function refreshView(tView, lView, templateFn, context) {
14385
14140
  }
14386
14141
  finally {
14387
14142
  if (currentConsumer !== null) {
14388
- consumerAfterComputation$1(currentConsumer, prevConsumer);
14143
+ consumerAfterComputation(currentConsumer, prevConsumer);
14389
14144
  if (returnConsumerToPool) {
14390
14145
  maybeReturnReactiveLViewConsumer(currentConsumer);
14391
14146
  }
@@ -14475,14 +14230,14 @@ function detectChangesInView(lView, mode) {
14475
14230
  // Always refresh views marked for refresh, regardless of mode.
14476
14231
  shouldRefreshView ||= !!(flags & 1024 /* LViewFlags.RefreshView */);
14477
14232
  // Refresh views when they have a dirty reactive consumer, regardless of mode.
14478
- shouldRefreshView ||= !!(consumer?.dirty && consumerPollProducersForChange$1(consumer));
14233
+ shouldRefreshView ||= !!(consumer?.dirty && consumerPollProducersForChange(consumer));
14479
14234
  shouldRefreshView ||= !!(ngDevMode && isExhaustiveCheckNoChanges());
14480
14235
  // Mark the Flags and `ReactiveNode` as not dirty before refreshing the component, so that they
14481
14236
  // can be re-dirtied during the refresh process.
14482
14237
  if (consumer) {
14483
14238
  consumer.dirty = false;
14484
14239
  }
14485
- lView[FLAGS] &= ~(8192 /* LViewFlags.HasChildViewsToRefresh */ | 1024 /* LViewFlags.RefreshView */);
14240
+ lView[FLAGS] &= -9217;
14486
14241
  if (shouldRefreshView) {
14487
14242
  refreshView(tView, lView, tView.template, lView[CONTEXT]);
14488
14243
  }
@@ -14678,7 +14433,7 @@ function detachView(lContainer, removeIndex) {
14678
14433
  viewToDetach[PARENT] = null;
14679
14434
  viewToDetach[NEXT] = null;
14680
14435
  // Unsets the attached flag
14681
- viewToDetach[FLAGS] &= ~128 /* LViewFlags.Attached */;
14436
+ viewToDetach[FLAGS] &= -129 /* LViewFlags.Attached */;
14682
14437
  }
14683
14438
  return viewToDetach;
14684
14439
  }
@@ -14760,7 +14515,7 @@ function trackMovedView(declarationContainer, lView) {
14760
14515
  }
14761
14516
  }
14762
14517
 
14763
- class ViewRef$1 {
14518
+ let ViewRef$1 = class ViewRef {
14764
14519
  _lView;
14765
14520
  _cdRefInjectingView;
14766
14521
  notifyErrorHandler;
@@ -14925,7 +14680,7 @@ class ViewRef$1 {
14925
14680
  * ```
14926
14681
  */
14927
14682
  detach() {
14928
- this._lView[FLAGS] &= ~128 /* LViewFlags.Attached */;
14683
+ this._lView[FLAGS] &= -129 /* LViewFlags.Attached */;
14929
14684
  }
14930
14685
  /**
14931
14686
  * Re-attaches a view to the change detection tree.
@@ -15055,7 +14810,7 @@ class ViewRef$1 {
15055
14810
  }
15056
14811
  updateAncestorTraversalFlagsOnAttach(this._lView);
15057
14812
  }
15058
- }
14813
+ };
15059
14814
  /**
15060
14815
  * Reports whether the given view is considered dirty according to the different marking mechanisms.
15061
14816
  */
@@ -17040,8 +16795,8 @@ function findMatchingDehydratedView(lContainer, template) {
17040
16795
  *
17041
16796
  * @publicApi
17042
16797
  */
17043
- class ComponentRef$1 {
17044
- }
16798
+ let ComponentRef$1 = class ComponentRef {
16799
+ };
17045
16800
  /**
17046
16801
  * Base class for a factory that can create a component dynamically.
17047
16802
  * Instantiate a factory for a given type of component with `resolveComponentFactory()`.
@@ -17052,8 +16807,8 @@ class ComponentRef$1 {
17052
16807
  * @deprecated Angular no longer requires Component factories. Please use other APIs where
17053
16808
  * Component class can be used directly.
17054
16809
  */
17055
- class ComponentFactory$1 {
17056
- }
16810
+ let ComponentFactory$1 = class ComponentFactory {
16811
+ };
17057
16812
 
17058
16813
  class _NullComponentFactoryResolver {
17059
16814
  resolveComponentFactory(component) {
@@ -17075,9 +16830,9 @@ class _NullComponentFactoryResolver {
17075
16830
  * @deprecated Angular no longer requires Component factories. Please use other APIs where
17076
16831
  * Component class can be used directly.
17077
16832
  */
17078
- class ComponentFactoryResolver$1 {
16833
+ let ComponentFactoryResolver$1 = class ComponentFactoryResolver {
17079
16834
  static NULL = new _NullComponentFactoryResolver();
17080
- }
16835
+ };
17081
16836
 
17082
16837
  /**
17083
16838
  * Creates and initializes a custom renderer that implements the `Renderer2` base class.
@@ -17436,7 +17191,6 @@ function addSet(sourceSet, targetSet) {
17436
17191
  }
17437
17192
  /** The deps tracker to be used in the current Angular app in dev mode. */
17438
17193
  const depsTracker = new DepsTracker();
17439
- const TEST_ONLY = { DepsTracker };
17440
17194
 
17441
17195
  /**
17442
17196
  * Compute the static styling (class/style) from `TAttributes`.
@@ -18105,12 +17859,12 @@ class ComponentFactory extends ComponentFactory$1 {
18105
17859
  }
18106
17860
  create(injector, projectableNodes, rootSelectorOrNode, environmentInjector) {
18107
17861
  profiler(22 /* ProfilerEvent.DynamicComponentStart */);
18108
- const prevConsumer = setActiveConsumer$1(null);
17862
+ const prevConsumer = setActiveConsumer(null);
18109
17863
  try {
18110
17864
  const cmpDef = this.componentDef;
18111
17865
  ngDevMode && verifyNotAnOrphanComponent(cmpDef);
18112
17866
  const tAttributes = rootSelectorOrNode
18113
- ? ['ng-version', '19.2.1']
17867
+ ? ['ng-version', '19.2.2']
18114
17868
  : // Extract attributes and classes from the first selector only to match VE behavior.
18115
17869
  extractAttrsAndClassesFromSelector(this.componentDef.selectors[0]);
18116
17870
  // Create the root view. Uses empty TView and ContentTemplate.
@@ -18168,7 +17922,7 @@ class ComponentFactory extends ComponentFactory$1 {
18168
17922
  return new ComponentRef(this.componentType, rootLView);
18169
17923
  }
18170
17924
  finally {
18171
- setActiveConsumer$1(prevConsumer);
17925
+ setActiveConsumer(prevConsumer);
18172
17926
  }
18173
17927
  }
18174
17928
  }
@@ -19119,7 +18873,7 @@ function getQueryResults(lView, queryIndex) {
19119
18873
  */
19120
18874
  function createQuerySignalFn(firstOnly, required, opts) {
19121
18875
  let node;
19122
- const signalFn = createComputed$1(() => {
18876
+ const signalFn = createComputed(() => {
19123
18877
  // A dedicated signal that increments its value every time a query changes its dirty status. By
19124
18878
  // using this signal we can implement a query as computed and avoid creation of a specialized
19125
18879
  // reactive node type. Please note that a query gets marked dirty under the following
@@ -19133,7 +18887,7 @@ function createQuerySignalFn(firstOnly, required, opts) {
19133
18887
  }
19134
18888
  return value;
19135
18889
  });
19136
- node = signalFn[SIGNAL$1];
18890
+ node = signalFn[SIGNAL];
19137
18891
  node._dirtyCounter = signal(0);
19138
18892
  node._flatValue = undefined;
19139
18893
  if (ngDevMode) {
@@ -19152,7 +18906,7 @@ function createMultiResultQuerySignalFn(opts) {
19152
18906
  return createQuerySignalFn(/* firstOnly */ false, /* required */ false, opts);
19153
18907
  }
19154
18908
  function bindQueryToSignal(target, queryIndex) {
19155
- const node = target[SIGNAL$1];
18909
+ const node = target[SIGNAL];
19156
18910
  node._lView = getLView();
19157
18911
  node._queryIndex = queryIndex;
19158
18912
  node._queryList = loadQueryInternal(node._lView, queryIndex);
@@ -19325,16 +19079,16 @@ function createModelSignal(initialValue, opts) {
19325
19079
  const emitterRef = new OutputEmitterRef();
19326
19080
  node.value = initialValue;
19327
19081
  function getter() {
19328
- producerAccessed$1(node);
19082
+ producerAccessed(node);
19329
19083
  assertModelSet(node.value);
19330
19084
  return node.value;
19331
19085
  }
19332
- getter[SIGNAL$1] = node;
19086
+ getter[SIGNAL] = node;
19333
19087
  getter.asReadonly = signalAsReadonlyFn.bind(getter);
19334
19088
  // TODO: Should we throw an error when updating a destroyed model?
19335
19089
  getter.set = (newValue) => {
19336
19090
  if (!node.equal(node.value, newValue)) {
19337
- signalSetFn$1(node, newValue);
19091
+ signalSetFn(node, newValue);
19338
19092
  emitterRef.emit(newValue);
19339
19093
  }
19340
19094
  };
@@ -19644,9 +19398,6 @@ function registerNgModuleType(ngModuleType, id) {
19644
19398
  assertSameOrNotExisting(id, existing, ngModuleType);
19645
19399
  modules.set(id, ngModuleType);
19646
19400
  }
19647
- function clearModulesForTest() {
19648
- modules.clear();
19649
- }
19650
19401
  function getRegisteredNgModuleType(id) {
19651
19402
  return modules.get(id);
19652
19403
  }
@@ -19702,8 +19453,8 @@ function ɵɵvalidateIframeAttribute(attrValue, tagName, attrName) {
19702
19453
  *
19703
19454
  * @publicApi
19704
19455
  */
19705
- class NgModuleRef$1 {
19706
- }
19456
+ let NgModuleRef$1 = class NgModuleRef {
19457
+ };
19707
19458
  /**
19708
19459
  * @publicApi
19709
19460
  *
@@ -19714,8 +19465,8 @@ class NgModuleRef$1 {
19714
19465
  * [createNgModule](api/core/createNgModule)), consider switching to those APIs instead of
19715
19466
  * using factory-based ones.
19716
19467
  */
19717
- class NgModuleFactory$1 {
19718
- }
19468
+ let NgModuleFactory$1 = class NgModuleFactory {
19469
+ };
19719
19470
 
19720
19471
  /**
19721
19472
  * Returns a new NgModuleRef instance based on the NgModule class and parent injector provided.
@@ -20657,9 +20408,6 @@ function validateMappings(bindingType, def, hostDirectiveBindings) {
20657
20408
  }
20658
20409
  }
20659
20410
 
20660
- function isIterable(obj) {
20661
- return obj !== null && typeof obj === 'object' && obj[Symbol.iterator] !== undefined;
20662
- }
20663
20411
  function isListLikeIterable(obj) {
20664
20412
  if (!isJsObject(obj))
20665
20413
  return false;
@@ -20893,7 +20641,7 @@ function locateOrCreateContainerAnchorImpl(tView, lView, tNode, index) {
20893
20641
  lastNodeWasCreated(isNodeCreationMode);
20894
20642
  // Regular creation mode.
20895
20643
  if (isNodeCreationMode) {
20896
- return createContainerAnchorImpl(tView, lView, tNode, index);
20644
+ return createContainerAnchorImpl(tView, lView);
20897
20645
  }
20898
20646
  const ssrId = hydrationInfo.data[TEMPLATES]?.[index] ?? null;
20899
20647
  // Apply `ssrId` value to the underlying TView if it was not previously set.
@@ -21633,26 +21381,6 @@ function setClassMetadata(type, decorators, ctorParameters, propDecorators) {
21633
21381
  });
21634
21382
  }
21635
21383
 
21636
- /*
21637
- * This file exists to support compilation of @angular/core in Ivy mode.
21638
- *
21639
- * When the Angular compiler processes a compilation unit, it normally writes imports to
21640
- * @angular/core. When compiling the core package itself this strategy isn't usable. Instead, the
21641
- * compiler writes imports to this file.
21642
- *
21643
- * Only a subset of such imports are supported - core is not allowed to declare components or pipes.
21644
- * A check in ngtsc's `R3SymbolsImportRewriter` validates this condition. The rewriter is only used
21645
- * when compiling @angular/core and is responsible for translating an external name (prefixed with
21646
- * ɵ) to the internal symbol name as exported below.
21647
- *
21648
- * The below symbols are used for @Injectable and @NgModule compilation.
21649
- */
21650
- /**
21651
- * The existence of this constant (in this particular file) informs the Angular compiler that the
21652
- * current program is actually @angular/core, which needs to be compiled specially.
21653
- */
21654
- const ITS_JUST_ANGULAR = true;
21655
-
21656
21384
  class Console {
21657
21385
  log(message) {
21658
21386
  // tslint:disable-next-line:no-console
@@ -22720,7 +22448,7 @@ function extractEffectsFromInjector(injector) {
22720
22448
  }
22721
22449
  const resolverToEffects = getFrameworkDIDebugData().resolverToEffects;
22722
22450
  const effects = resolverToEffects.get(diResolver) ?? [];
22723
- return effects.map((effect) => effect[SIGNAL$1]);
22451
+ return effects.map((effect) => effect[SIGNAL]);
22724
22452
  }
22725
22453
  function extractSignalNodesAndEdgesFromRoots(nodes, signalDependenciesMap = new Map()) {
22726
22454
  for (const node of nodes) {
@@ -23449,7 +23177,7 @@ function publishDefaultGlobalUtils() {
23449
23177
  * Sets the error for an invalid write to a signal to be an Angular `RuntimeError`.
23450
23178
  */
23451
23179
  function publishSignalConfiguration() {
23452
- setThrowInvalidWriteToSignalError$1(() => {
23180
+ setThrowInvalidWriteToSignalError(() => {
23453
23181
  throw new RuntimeError(600 /* RuntimeErrorCode.SIGNAL_WRITE_FROM_ILLEGAL_CONTEXT */, ngDevMode && 'Writing to signals is not allowed in a `computed`.');
23454
23182
  });
23455
23183
  }
@@ -23698,12 +23426,15 @@ class ApplicationRef {
23698
23426
  const isComponentFactory = componentOrFactory instanceof ComponentFactory$1;
23699
23427
  const initStatus = this._injector.get(ApplicationInitStatus);
23700
23428
  if (!initStatus.done) {
23701
- const standalone = !isComponentFactory && isStandalone(componentOrFactory);
23702
- const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) &&
23703
- 'Cannot bootstrap as there are still asynchronous initializers running.' +
23704
- (standalone
23705
- ? ''
23706
- : ' Bootstrap components in the `ngDoBootstrap` method of the root module.');
23429
+ let errorMessage = '';
23430
+ if (typeof ngDevMode === 'undefined' || ngDevMode) {
23431
+ const standalone = !isComponentFactory && isStandalone(componentOrFactory);
23432
+ errorMessage =
23433
+ 'Cannot bootstrap as there are still asynchronous initializers running.' +
23434
+ (standalone
23435
+ ? ''
23436
+ : ' Bootstrap components in the `ngDoBootstrap` method of the root module.');
23437
+ }
23707
23438
  throw new RuntimeError(405 /* RuntimeErrorCode.ASYNC_INITIALIZERS_STILL_RUNNING */, errorMessage);
23708
23439
  }
23709
23440
  let componentFactory;
@@ -23771,7 +23502,7 @@ class ApplicationRef {
23771
23502
  if (this._runningTick) {
23772
23503
  throw new RuntimeError(101 /* RuntimeErrorCode.RECURSIVE_APPLICATION_REF_TICK */, ngDevMode && 'ApplicationRef.tick is called recursively');
23773
23504
  }
23774
- const prevConsumer = setActiveConsumer$1(null);
23505
+ const prevConsumer = setActiveConsumer(null);
23775
23506
  try {
23776
23507
  this._runningTick = true;
23777
23508
  this.synchronize();
@@ -23789,7 +23520,7 @@ class ApplicationRef {
23789
23520
  this._runningTick = false;
23790
23521
  this.tracingSnapshot?.dispose();
23791
23522
  this.tracingSnapshot = null;
23792
- setActiveConsumer$1(prevConsumer);
23523
+ setActiveConsumer(prevConsumer);
23793
23524
  this.afterTick.next();
23794
23525
  profiler(13 /* ProfilerEvent.ChangeDetectionEnd */);
23795
23526
  }
@@ -23821,7 +23552,7 @@ class ApplicationRef {
23821
23552
  synchronizeOnce() {
23822
23553
  // First, process any dirty root effects.
23823
23554
  if (this.dirtyFlags & 16 /* ApplicationRefDirtyFlags.RootEffects */) {
23824
- this.dirtyFlags &= ~16 /* ApplicationRefDirtyFlags.RootEffects */;
23555
+ this.dirtyFlags &= -17 /* ApplicationRefDirtyFlags.RootEffects */;
23825
23556
  this.rootEffectScheduler.flush();
23826
23557
  }
23827
23558
  // First check dirty views, if there are any.
@@ -23831,7 +23562,7 @@ class ApplicationRef {
23831
23562
  // `ApplicationRef.tick()` and the `NgZone` integration.
23832
23563
  const useGlobalCheck = Boolean(this.dirtyFlags & 1 /* ApplicationRefDirtyFlags.ViewTreeGlobal */);
23833
23564
  // Clear the view-related dirty flags.
23834
- this.dirtyFlags &= ~7 /* ApplicationRefDirtyFlags.ViewTreeAny */;
23565
+ this.dirtyFlags &= -8 /* ApplicationRefDirtyFlags.ViewTreeAny */;
23835
23566
  // Set the AfterRender bit, as we're checking views and will need to run afterRender hooks.
23836
23567
  this.dirtyFlags |= 8 /* ApplicationRefDirtyFlags.AfterRender */;
23837
23568
  // Check all potentially dirty views.
@@ -23841,7 +23572,7 @@ class ApplicationRef {
23841
23572
  // If `markForCheck()` was called during view checking, it will have set the `ViewTreeCheck`
23842
23573
  // flag. We clear the flag here because, for backwards compatibility, `markForCheck()`
23843
23574
  // during view checking doesn't cause the view to be re-checked.
23844
- this.dirtyFlags &= ~4 /* ApplicationRefDirtyFlags.ViewTreeCheck */;
23575
+ this.dirtyFlags &= -5 /* ApplicationRefDirtyFlags.ViewTreeCheck */;
23845
23576
  // Check if any views are still dirty after checking and we need to loop back.
23846
23577
  this.syncDirtyFlagsWithViews();
23847
23578
  if (this.dirtyFlags &
@@ -23859,7 +23590,7 @@ class ApplicationRef {
23859
23590
  }
23860
23591
  // Even if there were no dirty views, afterRender hooks might still be dirty.
23861
23592
  if (this.dirtyFlags & 8 /* ApplicationRefDirtyFlags.AfterRender */) {
23862
- this.dirtyFlags &= ~8 /* ApplicationRefDirtyFlags.AfterRender */;
23593
+ this.dirtyFlags &= -9 /* ApplicationRefDirtyFlags.AfterRender */;
23863
23594
  this.afterRenderManager.execute();
23864
23595
  // afterRender hooks might influence dirty flags.
23865
23596
  }
@@ -23888,7 +23619,7 @@ class ApplicationRef {
23888
23619
  else {
23889
23620
  // Even though this flag may be set, none of _our_ views require traversal, and so the
23890
23621
  // `ApplicationRef` doesn't require any repeated checking.
23891
- this.dirtyFlags &= ~7 /* ApplicationRefDirtyFlags.ViewTreeAny */;
23622
+ this.dirtyFlags &= -8 /* ApplicationRefDirtyFlags.ViewTreeAny */;
23892
23623
  }
23893
23624
  }
23894
23625
  /**
@@ -24234,8 +23965,8 @@ function triggerDeferBlock(triggerType, lView, tNode) {
24234
23965
  }
24235
23966
  }
24236
23967
  /**
24237
- * The core mechanism for incremental hydration. This triggers
24238
- * hydration for all the blocks in the tree that need to be hydrated
23968
+ * The core mechanism for incremental hydration. This triggers or
23969
+ * queues hydration for all the blocks in the tree that need to be hydrated
24239
23970
  * and keeps track of all those blocks that were hydrated along the way.
24240
23971
  *
24241
23972
  * Note: the `replayQueuedEventsFn` is only provided when hydration is invoked
@@ -24250,26 +23981,57 @@ async function triggerHydrationFromBlockName(injector, blockName, replayQueuedEv
24250
23981
  if (blocksBeingHydrated.has(blockName)) {
24251
23982
  return;
24252
23983
  }
24253
- // The parent promise is the possible case of a list of defer blocks already being queued
24254
- // If it is queued, it'll exist; otherwise it'll be null. The hydration queue will contain all
24255
- // elements that need to be hydrated, sans any that have promises already
24256
- const { parentBlockPromise, hydrationQueue } = getParentBlockHydrationQueue(blockName, injector);
24257
- // The hydrating map in the registry prevents re-triggering hydration for a block that's already in
24258
- // the hydration queue. Here we generate promises for each of the blocks about to be hydrated
24259
- populateHydratingStateForQueue(dehydratedBlockRegistry, hydrationQueue);
24260
23984
  // Trigger resource loading and hydration for the blocks in the queue in the order of highest block
24261
23985
  // to lowest block. Once a block has finished resource loading, after next render fires after hydration
24262
23986
  // finishes. The new block will have its defer instruction called and will be in the registry.
24263
23987
  // Due to timing related to potential nested control flow, this has to be scheduled after the next render.
24264
- // Indicate that we have some pending async work.
24265
- const pendingTasks = injector.get(PendingTasksInternal);
24266
- const taskId = pendingTasks.add();
24267
- // If the parent block was being hydrated, but the process has
24268
- // not yet complete, wait until parent block promise settles before
24269
- // going over dehydrated blocks from the queue.
23988
+ const { parentBlockPromise, hydrationQueue } = getParentBlockHydrationQueue(blockName, injector);
23989
+ if (hydrationQueue.length === 0)
23990
+ return;
23991
+ // It's possible that the hydrationQueue topmost item is actually in the process of hydrating and has
23992
+ // a promise already. In that case, we don't want to destroy that promise and queue it again.
23993
+ if (parentBlockPromise !== null) {
23994
+ hydrationQueue.shift();
23995
+ }
23996
+ // The hydrating map in the registry prevents re-triggering hydration for a block that's already in
23997
+ // the hydration queue. Here we generate promises for each of the blocks about to be hydrated
23998
+ populateHydratingStateForQueue(dehydratedBlockRegistry, hydrationQueue);
23999
+ // We await this after populating the hydration state so we can prevent re-triggering hydration for
24000
+ // the same blocks while this promise is being awaited.
24270
24001
  if (parentBlockPromise !== null) {
24271
24002
  await parentBlockPromise;
24272
24003
  }
24004
+ const topmostParentBlock = hydrationQueue[0];
24005
+ if (dehydratedBlockRegistry.has(topmostParentBlock)) {
24006
+ // the topmost parent block is already in the registry and we can proceed
24007
+ // with hydration.
24008
+ await triggerHydrationForBlockQueue(injector, hydrationQueue, replayQueuedEventsFn);
24009
+ }
24010
+ else {
24011
+ // the topmost parent block is not yet in the registry, which may mean
24012
+ // a lazy loaded route, a control flow branch was taken, a route has
24013
+ // been navigated, etc. So we need to queue up the hydration process
24014
+ // so that it can be finished after the top block has had its defer
24015
+ // instruction executed.
24016
+ dehydratedBlockRegistry.awaitParentBlock(topmostParentBlock, async () => await triggerHydrationForBlockQueue(injector, hydrationQueue, replayQueuedEventsFn));
24017
+ }
24018
+ }
24019
+ /**
24020
+ * The core mechanism for incremental hydration. This triggers
24021
+ * hydration for all the blocks in the tree that need to be hydrated
24022
+ * and keeps track of all those blocks that were hydrated along the way.
24023
+ *
24024
+ * Note: the `replayQueuedEventsFn` is only provided when hydration is invoked
24025
+ * as a result of an event replay (via JsAction). When hydration is invoked from
24026
+ * an instruction set (e.g. `deferOnImmediate`) - there is no need to replay any
24027
+ * events.
24028
+ */
24029
+ async function triggerHydrationForBlockQueue(injector, hydrationQueue, replayQueuedEventsFn) {
24030
+ const dehydratedBlockRegistry = injector.get(DEHYDRATED_BLOCK_REGISTRY);
24031
+ const blocksBeingHydrated = dehydratedBlockRegistry.hydrating;
24032
+ // Indicate that we have some pending async work.
24033
+ const pendingTasks = injector.get(PendingTasksInternal);
24034
+ const taskId = pendingTasks.add();
24273
24035
  // Actually do the triggering and hydration of the queue of blocks
24274
24036
  for (let blockQueueIdx = 0; blockQueueIdx < hydrationQueue.length; blockQueueIdx++) {
24275
24037
  const dehydratedBlockId = hydrationQueue[blockQueueIdx];
@@ -24302,8 +24064,9 @@ async function triggerHydrationFromBlockName(injector, blockName, replayQueuedEv
24302
24064
  break;
24303
24065
  }
24304
24066
  }
24305
- // Await hydration completion for the requested block.
24306
- await blocksBeingHydrated.get(blockName)?.promise;
24067
+ const lastBlockName = hydrationQueue[hydrationQueue.length - 1];
24068
+ // Await hydration completion for the last block.
24069
+ await blocksBeingHydrated.get(lastBlockName)?.promise;
24307
24070
  // All async work is done, remove the taskId from the registry.
24308
24071
  pendingTasks.remove(taskId);
24309
24072
  // Replay any queued events, if any exist and the replay operation was requested.
@@ -24311,7 +24074,7 @@ async function triggerHydrationFromBlockName(injector, blockName, replayQueuedEv
24311
24074
  replayQueuedEventsFn(hydrationQueue);
24312
24075
  }
24313
24076
  // Cleanup after hydration of all affected defer blocks.
24314
- cleanupHydratedDeferBlocks(dehydratedBlockRegistry.get(blockName), hydrationQueue, dehydratedBlockRegistry, injector.get(ApplicationRef));
24077
+ cleanupHydratedDeferBlocks(dehydratedBlockRegistry.get(lastBlockName), hydrationQueue, dehydratedBlockRegistry, injector.get(ApplicationRef));
24315
24078
  }
24316
24079
  function deferBlockHasErrored(deferBlock) {
24317
24080
  return (getLDeferBlockDetails(deferBlock.lView, deferBlock.tNode)[DEFER_BLOCK_STATE] ===
@@ -24490,7 +24253,7 @@ function setTimerTriggers(injector, elementTriggers) {
24490
24253
  function setImmediateTriggers(injector, elementTriggers) {
24491
24254
  for (const elementTrigger of elementTriggers) {
24492
24255
  // Note: we intentionally avoid awaiting each call and instead kick off
24493
- // th hydration process simultaneously for all defer blocks with this trigger;
24256
+ // the hydration process simultaneously for all defer blocks with this trigger;
24494
24257
  triggerHydrationFromBlockName(injector, elementTrigger.blockName);
24495
24258
  }
24496
24259
  }
@@ -24600,7 +24363,7 @@ function ɵɵdeferWhen(rawValue) {
24600
24363
  return;
24601
24364
  const bindingIndex = nextBindingIndex();
24602
24365
  if (bindingUpdated(lView, bindingIndex, rawValue)) {
24603
- const prevConsumer = setActiveConsumer$1(null);
24366
+ const prevConsumer = setActiveConsumer(null);
24604
24367
  try {
24605
24368
  const value = Boolean(rawValue); // handle truthy or falsy values
24606
24369
  const lDetails = getLDeferBlockDetails(lView, tNode);
@@ -24616,7 +24379,7 @@ function ɵɵdeferWhen(rawValue) {
24616
24379
  }
24617
24380
  }
24618
24381
  finally {
24619
- setActiveConsumer$1(prevConsumer);
24382
+ setActiveConsumer(prevConsumer);
24620
24383
  }
24621
24384
  }
24622
24385
  }
@@ -24634,7 +24397,7 @@ function ɵɵdeferPrefetchWhen(rawValue) {
24634
24397
  return;
24635
24398
  const bindingIndex = nextBindingIndex();
24636
24399
  if (bindingUpdated(lView, bindingIndex, rawValue)) {
24637
- const prevConsumer = setActiveConsumer$1(null);
24400
+ const prevConsumer = setActiveConsumer(null);
24638
24401
  try {
24639
24402
  const value = Boolean(rawValue); // handle truthy or falsy values
24640
24403
  const tView = lView[TVIEW];
@@ -24646,7 +24409,7 @@ function ɵɵdeferPrefetchWhen(rawValue) {
24646
24409
  }
24647
24410
  }
24648
24411
  finally {
24649
- setActiveConsumer$1(prevConsumer);
24412
+ setActiveConsumer(prevConsumer);
24650
24413
  }
24651
24414
  }
24652
24415
  }
@@ -24675,7 +24438,7 @@ function ɵɵdeferHydrateWhen(rawValue) {
24675
24438
  }
24676
24439
  else {
24677
24440
  const injector = lView[INJECTOR];
24678
- const prevConsumer = setActiveConsumer$1(null);
24441
+ const prevConsumer = setActiveConsumer(null);
24679
24442
  try {
24680
24443
  const value = Boolean(rawValue); // handle truthy or falsy values
24681
24444
  if (value === true) {
@@ -24689,7 +24452,7 @@ function ɵɵdeferHydrateWhen(rawValue) {
24689
24452
  }
24690
24453
  }
24691
24454
  finally {
24692
- setActiveConsumer$1(prevConsumer);
24455
+ setActiveConsumer(prevConsumer);
24693
24456
  }
24694
24457
  }
24695
24458
  }
@@ -24739,7 +24502,7 @@ function ɵɵdeferPrefetchOnIdle() {
24739
24502
  }
24740
24503
  if (!shouldAttachTrigger(1 /* TriggerType.Prefetch */, lView, tNode))
24741
24504
  return;
24742
- scheduleDelayedPrefetching(onIdle, 0 /* DeferBlockTrigger.Idle */);
24505
+ scheduleDelayedPrefetching(onIdle);
24743
24506
  }
24744
24507
  /**
24745
24508
  * Sets up logic to handle the `on idle` deferred trigger.
@@ -24855,7 +24618,7 @@ function ɵɵdeferPrefetchOnTimer(delay) {
24855
24618
  }
24856
24619
  if (!shouldAttachTrigger(1 /* TriggerType.Prefetch */, lView, tNode))
24857
24620
  return;
24858
- scheduleDelayedPrefetching(onTimer(delay), 5 /* DeferBlockTrigger.Timer */);
24621
+ scheduleDelayedPrefetching(onTimer(delay));
24859
24622
  }
24860
24623
  /**
24861
24624
  * Creates runtime data structures for the `on timer` hydrate trigger.
@@ -25673,7 +25436,7 @@ function getTStylingRangePrevDuplicate(tStylingRange) {
25673
25436
  function setTStylingRangePrev(tStylingRange, previous) {
25674
25437
  ngDevMode && assertNumber(tStylingRange, 'expected number');
25675
25438
  ngDevMode && assertNumberInRange(previous, 0, 32767 /* StylingRange.UNSIGNED_MASK */);
25676
- return ((tStylingRange & ~4294836224 /* StylingRange.PREV_MASK */) |
25439
+ return ((tStylingRange & 131071 /* StylingRange.PREV_MASK */) |
25677
25440
  (previous << 17 /* StylingRange.PREV_SHIFT */));
25678
25441
  }
25679
25442
  function setTStylingRangePrevDuplicate(tStylingRange) {
@@ -25687,7 +25450,7 @@ function getTStylingRangeNext(tStylingRange) {
25687
25450
  function setTStylingRangeNext(tStylingRange, next) {
25688
25451
  ngDevMode && assertNumber(tStylingRange, 'expected number');
25689
25452
  ngDevMode && assertNumberInRange(next, 0, 32767 /* StylingRange.UNSIGNED_MASK */);
25690
- return ((tStylingRange & ~131068 /* StylingRange.NEXT_MASK */) | //
25453
+ return ((tStylingRange & -131069 /* StylingRange.NEXT_MASK */) | //
25691
25454
  (next << 2 /* StylingRange.NEXT_SHIFT */));
25692
25455
  }
25693
25456
  function getTStylingRangeNextDuplicate(tStylingRange) {
@@ -25698,166 +25461,7 @@ function setTStylingRangeNextDuplicate(tStylingRange) {
25698
25461
  ngDevMode && assertNumber(tStylingRange, 'expected number');
25699
25462
  return (tStylingRange | 1 /* StylingRange.NEXT_DUPLICATE */);
25700
25463
  }
25701
- function getTStylingRangeTail(tStylingRange) {
25702
- ngDevMode && assertNumber(tStylingRange, 'expected number');
25703
- const next = getTStylingRangeNext(tStylingRange);
25704
- return next === 0 ? getTStylingRangePrev(tStylingRange) : next;
25705
- }
25706
25464
 
25707
- /**
25708
- * NOTE: The word `styling` is used interchangeably as style or class styling.
25709
- *
25710
- * This file contains code to link styling instructions together so that they can be replayed in
25711
- * priority order. The file exists because Ivy styling instruction execution order does not match
25712
- * that of the priority order. The purpose of this code is to create a linked list so that the
25713
- * instructions can be traversed in priority order when computing the styles.
25714
- *
25715
- * Assume we are dealing with the following code:
25716
- * ```angular-ts
25717
- * @Component({
25718
- * template: `
25719
- * <my-cmp [style]=" {color: '#001'} "
25720
- * [style.color]=" #002 "
25721
- * dir-style-color-1
25722
- * dir-style-color-2> `
25723
- * })
25724
- * class ExampleComponent {
25725
- * static ngComp = ... {
25726
- * ...
25727
- * // Compiler ensures that `ɵɵstyleProp` is after `ɵɵstyleMap`
25728
- * ɵɵstyleMap({color: '#001'});
25729
- * ɵɵstyleProp('color', '#002');
25730
- * ...
25731
- * }
25732
- * }
25733
- *
25734
- * @Directive({
25735
- * selector: `[dir-style-color-1]',
25736
- * })
25737
- * class Style1Directive {
25738
- * @HostBinding('style') style = {color: '#005'};
25739
- * @HostBinding('style.color') color = '#006';
25740
- *
25741
- * static ngDir = ... {
25742
- * ...
25743
- * // Compiler ensures that `ɵɵstyleProp` is after `ɵɵstyleMap`
25744
- * ɵɵstyleMap({color: '#005'});
25745
- * ɵɵstyleProp('color', '#006');
25746
- * ...
25747
- * }
25748
- * }
25749
- *
25750
- * @Directive({
25751
- * selector: `[dir-style-color-2]',
25752
- * })
25753
- * class Style2Directive {
25754
- * @HostBinding('style') style = {color: '#007'};
25755
- * @HostBinding('style.color') color = '#008';
25756
- *
25757
- * static ngDir = ... {
25758
- * ...
25759
- * // Compiler ensures that `ɵɵstyleProp` is after `ɵɵstyleMap`
25760
- * ɵɵstyleMap({color: '#007'});
25761
- * ɵɵstyleProp('color', '#008');
25762
- * ...
25763
- * }
25764
- * }
25765
- *
25766
- * @Directive({
25767
- * selector: `my-cmp',
25768
- * })
25769
- * class MyComponent {
25770
- * @HostBinding('style') style = {color: '#003'};
25771
- * @HostBinding('style.color') color = '#004';
25772
- *
25773
- * static ngComp = ... {
25774
- * ...
25775
- * // Compiler ensures that `ɵɵstyleProp` is after `ɵɵstyleMap`
25776
- * ɵɵstyleMap({color: '#003'});
25777
- * ɵɵstyleProp('color', '#004');
25778
- * ...
25779
- * }
25780
- * }
25781
- * ```
25782
- *
25783
- * The Order of instruction execution is:
25784
- *
25785
- * NOTE: the comment binding location is for illustrative purposes only.
25786
- *
25787
- * ```ts
25788
- * // Template: (ExampleComponent)
25789
- * ɵɵstyleMap({color: '#001'}); // Binding index: 10
25790
- * ɵɵstyleProp('color', '#002'); // Binding index: 12
25791
- * // MyComponent
25792
- * ɵɵstyleMap({color: '#003'}); // Binding index: 20
25793
- * ɵɵstyleProp('color', '#004'); // Binding index: 22
25794
- * // Style1Directive
25795
- * ɵɵstyleMap({color: '#005'}); // Binding index: 24
25796
- * ɵɵstyleProp('color', '#006'); // Binding index: 26
25797
- * // Style2Directive
25798
- * ɵɵstyleMap({color: '#007'}); // Binding index: 28
25799
- * ɵɵstyleProp('color', '#008'); // Binding index: 30
25800
- * ```
25801
- *
25802
- * The correct priority order of concatenation is:
25803
- *
25804
- * ```ts
25805
- * // MyComponent
25806
- * ɵɵstyleMap({color: '#003'}); // Binding index: 20
25807
- * ɵɵstyleProp('color', '#004'); // Binding index: 22
25808
- * // Style1Directive
25809
- * ɵɵstyleMap({color: '#005'}); // Binding index: 24
25810
- * ɵɵstyleProp('color', '#006'); // Binding index: 26
25811
- * // Style2Directive
25812
- * ɵɵstyleMap({color: '#007'}); // Binding index: 28
25813
- * ɵɵstyleProp('color', '#008'); // Binding index: 30
25814
- * // Template: (ExampleComponent)
25815
- * ɵɵstyleMap({color: '#001'}); // Binding index: 10
25816
- * ɵɵstyleProp('color', '#002'); // Binding index: 12
25817
- * ```
25818
- *
25819
- * What color should be rendered?
25820
- *
25821
- * Once the items are correctly sorted in the list, the answer is simply the last item in the
25822
- * concatenation list which is `#002`.
25823
- *
25824
- * To do so we keep a linked list of all of the bindings which pertain to this element.
25825
- * Notice that the bindings are inserted in the order of execution, but the `TView.data` allows
25826
- * us to traverse them in the order of priority.
25827
- *
25828
- * |Idx|`TView.data`|`LView` | Notes
25829
- * |---|------------|-----------------|--------------
25830
- * |...| | |
25831
- * |10 |`null` |`{color: '#001'}`| `ɵɵstyleMap('color', {color: '#001'})`
25832
- * |11 |`30 | 12` | ... |
25833
- * |12 |`color` |`'#002'` | `ɵɵstyleProp('color', '#002')`
25834
- * |13 |`10 | 0` | ... |
25835
- * |...| | |
25836
- * |20 |`null` |`{color: '#003'}`| `ɵɵstyleMap('color', {color: '#003'})`
25837
- * |21 |`0 | 22` | ... |
25838
- * |22 |`color` |`'#004'` | `ɵɵstyleProp('color', '#004')`
25839
- * |23 |`20 | 24` | ... |
25840
- * |24 |`null` |`{color: '#005'}`| `ɵɵstyleMap('color', {color: '#005'})`
25841
- * |25 |`22 | 26` | ... |
25842
- * |26 |`color` |`'#006'` | `ɵɵstyleProp('color', '#006')`
25843
- * |27 |`24 | 28` | ... |
25844
- * |28 |`null` |`{color: '#007'}`| `ɵɵstyleMap('color', {color: '#007'})`
25845
- * |29 |`26 | 30` | ... |
25846
- * |30 |`color` |`'#008'` | `ɵɵstyleProp('color', '#008')`
25847
- * |31 |`28 | 10` | ... |
25848
- *
25849
- * The above data structure allows us to re-concatenate the styling no matter which data binding
25850
- * changes.
25851
- *
25852
- * NOTE: in addition to keeping track of next/previous index the `TView.data` also stores prev/next
25853
- * duplicate bit. The duplicate bit if true says there either is a binding with the same name or
25854
- * there is a map (which may contain the name). This information is useful in knowing if other
25855
- * styles with higher priority need to be searched for overwrites.
25856
- *
25857
- * NOTE: See `should support example in 'tnode_linked_list.ts' documentation` in
25858
- * `tnode_linked_list_spec.ts` for working example.
25859
- */
25860
- let __unused_const_as_closure_does_not_like_standalone_comment_blocks__;
25861
25465
  /**
25862
25466
  * Insert new `tStyleValue` at `TData` and link existing style bindings such that we maintain linked
25863
25467
  * list of styles and compute the duplicate flag.
@@ -27178,12 +26782,7 @@ function isStylingValuePresent(value) {
27178
26782
  * @param suffix
27179
26783
  */
27180
26784
  function normalizeSuffix(value, suffix) {
27181
- if (value == null || value === '') {
27182
- // do nothing
27183
- // Do not add the suffix if the value is going to be empty.
27184
- // As it produce invalid CSS, which the browsers will automatically omit but Domino will not.
27185
- // Example: `"left": "px;"` instead of `"left": ""`.
27186
- }
26785
+ if (value == null || value === '') ;
27187
26786
  else if (typeof suffix === 'string') {
27188
26787
  value = value + suffix;
27189
26788
  }
@@ -27890,7 +27489,7 @@ function ɵɵconditional(matchingTemplateIndex, contextValue) {
27890
27489
  : undefined;
27891
27490
  const viewInContainerIdx = 0;
27892
27491
  if (bindingUpdated(hostLView, bindingIndex, matchingTemplateIndex)) {
27893
- const prevConsumer = setActiveConsumer$1(null);
27492
+ const prevConsumer = setActiveConsumer(null);
27894
27493
  try {
27895
27494
  // The index of the view to show changed - remove the previously displayed one
27896
27495
  // (it is a noop if there are no active views in a container).
@@ -27911,7 +27510,7 @@ function ɵɵconditional(matchingTemplateIndex, contextValue) {
27911
27510
  }
27912
27511
  }
27913
27512
  finally {
27914
- setActiveConsumer$1(prevConsumer);
27513
+ setActiveConsumer(prevConsumer);
27915
27514
  }
27916
27515
  }
27917
27516
  else if (prevContainer !== undefined) {
@@ -28113,7 +27712,7 @@ class LiveCollectionLContainerImpl extends LiveCollection {
28113
27712
  * @codeGenApi
28114
27713
  */
28115
27714
  function ɵɵrepeater(collection) {
28116
- const prevConsumer = setActiveConsumer$1(null);
27715
+ const prevConsumer = setActiveConsumer(null);
28117
27716
  const metadataSlotIdx = getSelectedIndex();
28118
27717
  try {
28119
27718
  const hostLView = getLView();
@@ -28165,7 +27764,7 @@ function ɵɵrepeater(collection) {
28165
27764
  }
28166
27765
  }
28167
27766
  finally {
28168
- setActiveConsumer$1(prevConsumer);
27767
+ setActiveConsumer(prevConsumer);
28169
27768
  }
28170
27769
  }
28171
27770
  function getLContainer(lView, index) {
@@ -28570,25 +28169,10 @@ function ɵɵsyntheticHostProperty(propName, value, sanitizer) {
28570
28169
  return ɵɵsyntheticHostProperty;
28571
28170
  }
28572
28171
 
28573
- /**
28574
- * NOTE: changes to the `ngI18nClosureMode` name must be synced with `compiler-cli/src/tooling.ts`.
28575
- */
28576
- if (typeof ngI18nClosureMode === 'undefined') {
28577
- // These property accesses can be ignored because ngI18nClosureMode will be set to false
28578
- // when optimizing code and the whole if statement will be dropped.
28579
- // Make sure to refer to ngI18nClosureMode as ['ngI18nClosureMode'] for closure.
28580
- // NOTE: we need to have it in IIFE so that the tree-shaker is happy.
28581
- (function () {
28582
- _global['ngI18nClosureMode'] =
28583
- // TODO(FW-1250): validate that this actually, you know, works.
28584
- typeof goog !== 'undefined' && typeof goog.getMsg === 'function';
28585
- })();
28586
- }
28587
-
28588
28172
  // THIS CODE IS GENERATED - DO NOT MODIFY.
28589
28173
  const u = undefined;
28590
28174
  function plural(val) {
28591
- const n = val, i = Math.floor(Math.abs(val)), v = val.toString().replace(/^[^.]*\.?/, '').length;
28175
+ const i = Math.floor(Math.abs(val)), v = val.toString().replace(/^[^.]*\.?/, '').length;
28592
28176
  if (i === 1 && v === 0)
28593
28177
  return 1;
28594
28178
  return 5;
@@ -30560,7 +30144,7 @@ function listenToOutput(tNode, tView, lView, index, lookupName, eventName, liste
30560
30144
  tCleanup && tCleanup.push(eventName, tNode.index, idx, -(idx + 1));
30561
30145
  }
30562
30146
  function executeListenerWithErrorHandling(lView, context, listenerFn, e) {
30563
- const prevConsumer = setActiveConsumer$1(null);
30147
+ const prevConsumer = setActiveConsumer(null);
30564
30148
  try {
30565
30149
  profiler(6 /* ProfilerEvent.OutputStart */, context, listenerFn);
30566
30150
  // Only explicitly returning false from a listener should preventDefault
@@ -30572,7 +30156,7 @@ function executeListenerWithErrorHandling(lView, context, listenerFn, e) {
30572
30156
  }
30573
30157
  finally {
30574
30158
  profiler(7 /* ProfilerEvent.OutputEnd */, context, listenerFn);
30575
- setActiveConsumer$1(prevConsumer);
30159
+ setActiveConsumer(prevConsumer);
30576
30160
  }
30577
30161
  }
30578
30162
  /**
@@ -32535,26 +32119,6 @@ function ɵɵattachSourceLocations(templatePath, locations) {
32535
32119
  }
32536
32120
  }
32537
32121
 
32538
- /*
32539
- * This file re-exports all symbols contained in this directory.
32540
- *
32541
- * Why is this file not `index.ts`?
32542
- *
32543
- * There seems to be an inconsistent path resolution of an `index.ts` file
32544
- * when only the parent directory is referenced. This could be due to the
32545
- * node module resolution configuration differing from rollup and/or typescript.
32546
- *
32547
- * With commit
32548
- * https://github.com/angular/angular/commit/d5e3f2c64bd13ce83e7c70788b7fc514ca4a9918
32549
- * the `instructions.ts` file was moved to `instructions/instructions.ts` and an
32550
- * `index.ts` file was used to re-export everything. Having had file names that were
32551
- * importing from `instructions' directly (not the from the sub file or the `index.ts`
32552
- * file) caused strange CI issues. `index.ts` had to be renamed to `all.ts` for this
32553
- * to work.
32554
- *
32555
- * Jira Issue = FW-1184
32556
- */
32557
-
32558
32122
  /**
32559
32123
  * Resolves the providers which are defined in the DirectiveDef.
32560
32124
  *
@@ -33777,7 +33341,7 @@ function resetProjectionState(tNode) {
33777
33341
  if (isTNodeShape(current)) {
33778
33342
  // Reset `projectionNext` since it can affect the traversal order during projection.
33779
33343
  current.projectionNext = null;
33780
- current.flags &= ~2 /* TNodeFlags.isProjected */;
33344
+ current.flags &= -3 /* TNodeFlags.isProjected */;
33781
33345
  }
33782
33346
  }
33783
33347
  tNode.projection = null;
@@ -34008,10 +33572,6 @@ function resetJitOptions() {
34008
33572
  jitOptions = null;
34009
33573
  }
34010
33574
 
34011
- function patchModuleCompilation() {
34012
- // Does nothing, but exists as a target for patching.
34013
- }
34014
-
34015
33575
  const moduleQueue = [];
34016
33576
  /**
34017
33577
  * Enqueues moduleDef to be checked later to see if scope can be set on its
@@ -34061,7 +33621,6 @@ function isResolvedDeclaration(declaration) {
34061
33621
  * This function automatically gets called when a class has a `@NgModule` decorator.
34062
33622
  */
34063
33623
  function compileNgModule(moduleType, ngModule = {}) {
34064
- patchModuleCompilation();
34065
33624
  compileNgModuleDefs(moduleType, ngModule);
34066
33625
  if (ngModule.id !== undefined) {
34067
33626
  registerNgModuleType(moduleType, ngModule.id);
@@ -34425,7 +33984,7 @@ function patchComponentDefWithScope(componentDef, transitiveScopes) {
34425
33984
  */
34426
33985
  function transitiveScopesFor(type) {
34427
33986
  if (isNgModule(type)) {
34428
- if (USE_RUNTIME_DEPS_TRACKER_FOR_JIT) {
33987
+ {
34429
33988
  const scope = depsTracker.getNgModuleScope(type);
34430
33989
  const def = getNgModuleDef(type, true);
34431
33990
  return {
@@ -34433,9 +33992,6 @@ function transitiveScopesFor(type) {
34433
33992
  ...scope,
34434
33993
  };
34435
33994
  }
34436
- else {
34437
- return transitiveScopesForNgModule(type);
34438
- }
34439
33995
  }
34440
33996
  else if (isStandalone(type)) {
34441
33997
  const directiveDef = getComponentDef(type) || getDirectiveDef(type);
@@ -34470,77 +34026,6 @@ function transitiveScopesFor(type) {
34470
34026
  // TODO: change the error message to be more user-facing and take standalone into account
34471
34027
  throw new Error(`${type.name} does not have a module def (ɵmod property)`);
34472
34028
  }
34473
- /**
34474
- * Compute the pair of transitive scopes (compilation scope and exported scope) for a given module.
34475
- *
34476
- * This operation is memoized and the result is cached on the module's definition. This function can
34477
- * be called on modules with components that have not fully compiled yet, but the result should not
34478
- * be used until they have.
34479
- *
34480
- * @param moduleType module that transitive scope should be calculated for.
34481
- */
34482
- function transitiveScopesForNgModule(moduleType) {
34483
- const def = getNgModuleDef(moduleType, true);
34484
- if (def.transitiveCompileScopes !== null) {
34485
- return def.transitiveCompileScopes;
34486
- }
34487
- const scopes = {
34488
- schemas: def.schemas || null,
34489
- compilation: {
34490
- directives: new Set(),
34491
- pipes: new Set(),
34492
- },
34493
- exported: {
34494
- directives: new Set(),
34495
- pipes: new Set(),
34496
- },
34497
- };
34498
- maybeUnwrapFn(def.imports).forEach((imported) => {
34499
- // When this module imports another, the imported module's exported directives and pipes are
34500
- // added to the compilation scope of this module.
34501
- const importedScope = transitiveScopesFor(imported);
34502
- importedScope.exported.directives.forEach((entry) => scopes.compilation.directives.add(entry));
34503
- importedScope.exported.pipes.forEach((entry) => scopes.compilation.pipes.add(entry));
34504
- });
34505
- maybeUnwrapFn(def.declarations).forEach((declared) => {
34506
- const declaredWithDefs = declared;
34507
- if (getPipeDef$1(declaredWithDefs)) {
34508
- scopes.compilation.pipes.add(declared);
34509
- }
34510
- else {
34511
- // Either declared has a ɵcmp or ɵdir, or it's a component which hasn't
34512
- // had its template compiled yet. In either case, it gets added to the compilation's
34513
- // directives.
34514
- scopes.compilation.directives.add(declared);
34515
- }
34516
- });
34517
- maybeUnwrapFn(def.exports).forEach((exported) => {
34518
- const exportedType = exported;
34519
- // Either the type is a module, a pipe, or a component/directive (which may not have a
34520
- // ɵcmp as it might be compiled asynchronously).
34521
- if (isNgModule(exportedType)) {
34522
- // When this module exports another, the exported module's exported directives and pipes are
34523
- // added to both the compilation and exported scopes of this module.
34524
- const exportedScope = transitiveScopesFor(exportedType);
34525
- exportedScope.exported.directives.forEach((entry) => {
34526
- scopes.compilation.directives.add(entry);
34527
- scopes.exported.directives.add(entry);
34528
- });
34529
- exportedScope.exported.pipes.forEach((entry) => {
34530
- scopes.compilation.pipes.add(entry);
34531
- scopes.exported.pipes.add(entry);
34532
- });
34533
- }
34534
- else if (getPipeDef$1(exportedType)) {
34535
- scopes.exported.pipes.add(exportedType);
34536
- }
34537
- else {
34538
- scopes.exported.directives.add(exportedType);
34539
- }
34540
- });
34541
- def.transitiveCompileScopes = scopes;
34542
- return scopes;
34543
- }
34544
34029
  function expandModuleWithProviders(value) {
34545
34030
  if (isModuleWithProviders(value)) {
34546
34031
  return value.ngModule;
@@ -34713,43 +34198,8 @@ function compileComponent(type, metadata) {
34713
34198
  * component's `imports`.
34714
34199
  */
34715
34200
  function getStandaloneDefFunctions(type, imports) {
34716
- let cachedDirectiveDefs = null;
34717
- let cachedPipeDefs = null;
34718
34201
  const directiveDefs = () => {
34719
- if (!USE_RUNTIME_DEPS_TRACKER_FOR_JIT) {
34720
- if (cachedDirectiveDefs === null) {
34721
- // Standalone components are always able to self-reference, so include the component's own
34722
- // definition in its `directiveDefs`.
34723
- cachedDirectiveDefs = [getComponentDef(type)];
34724
- const seen = new Set([type]);
34725
- for (const rawDep of imports) {
34726
- ngDevMode && verifyStandaloneImport(rawDep, type);
34727
- const dep = resolveForwardRef(rawDep);
34728
- if (seen.has(dep)) {
34729
- continue;
34730
- }
34731
- seen.add(dep);
34732
- if (!!getNgModuleDef(dep)) {
34733
- const scope = transitiveScopesFor(dep);
34734
- for (const dir of scope.exported.directives) {
34735
- const def = getComponentDef(dir) || getDirectiveDef(dir);
34736
- if (def && !seen.has(dir)) {
34737
- seen.add(dir);
34738
- cachedDirectiveDefs.push(def);
34739
- }
34740
- }
34741
- }
34742
- else {
34743
- const def = getComponentDef(dep) || getDirectiveDef(dep);
34744
- if (def) {
34745
- cachedDirectiveDefs.push(def);
34746
- }
34747
- }
34748
- }
34749
- }
34750
- return cachedDirectiveDefs;
34751
- }
34752
- else {
34202
+ {
34753
34203
  if (ngDevMode) {
34754
34204
  for (const rawDep of imports) {
34755
34205
  verifyStandaloneImport(rawDep, type);
@@ -34765,37 +34215,7 @@ function getStandaloneDefFunctions(type, imports) {
34765
34215
  }
34766
34216
  };
34767
34217
  const pipeDefs = () => {
34768
- if (!USE_RUNTIME_DEPS_TRACKER_FOR_JIT) {
34769
- if (cachedPipeDefs === null) {
34770
- cachedPipeDefs = [];
34771
- const seen = new Set();
34772
- for (const rawDep of imports) {
34773
- const dep = resolveForwardRef(rawDep);
34774
- if (seen.has(dep)) {
34775
- continue;
34776
- }
34777
- seen.add(dep);
34778
- if (!!getNgModuleDef(dep)) {
34779
- const scope = transitiveScopesFor(dep);
34780
- for (const pipe of scope.exported.pipes) {
34781
- const def = getPipeDef$1(pipe);
34782
- if (def && !seen.has(pipe)) {
34783
- seen.add(pipe);
34784
- cachedPipeDefs.push(def);
34785
- }
34786
- }
34787
- }
34788
- else {
34789
- const def = getPipeDef$1(dep);
34790
- if (def) {
34791
- cachedPipeDefs.push(def);
34792
- }
34793
- }
34794
- }
34795
- }
34796
- return cachedPipeDefs;
34797
- }
34798
- else {
34218
+ {
34799
34219
  if (ngDevMode) {
34800
34220
  for (const rawDep of imports) {
34801
34221
  verifyStandaloneImport(rawDep, type);
@@ -35131,11 +34551,6 @@ const NgModule = makeDecorator('NgModule', (ngModule) => ngModule, undefined, un
35131
34551
  */
35132
34552
  (type, meta) => compileNgModule(type, meta));
35133
34553
 
35134
- /**
35135
- * This indirection is needed to free up Component, etc symbols in the public API
35136
- * to be used by the decorator versions of these annotations.
35137
- */
35138
-
35139
34554
  /**
35140
34555
  * @description Represents the version of Angular
35141
34556
  *
@@ -35157,7 +34572,7 @@ class Version {
35157
34572
  /**
35158
34573
  * @publicApi
35159
34574
  */
35160
- const VERSION = new Version('19.2.1');
34575
+ const VERSION = new Version('19.2.2');
35161
34576
 
35162
34577
  /**
35163
34578
  * Combination of NgModuleFactory and ComponentFactories.
@@ -36744,8 +36159,6 @@ function enableProdMode() {
36744
36159
  }
36745
36160
  }
36746
36161
 
36747
- // Public API for render
36748
-
36749
36162
  /**
36750
36163
  * Returns the NgModuleFactory with the given id (specified using [@NgModule.id
36751
36164
  * field](api/core/NgModule#id)), if it exists and has been loaded. Factories for NgModules that do
@@ -36920,11 +36333,6 @@ class ViewRef extends ChangeDetectorRef {
36920
36333
  class EmbeddedViewRef extends ViewRef {
36921
36334
  }
36922
36335
 
36923
- // Public API for compiler
36924
-
36925
- // This file exists for easily patching NgModuleFactoryLoader in g3
36926
- var ng_module_factory_loader_impl = {};
36927
-
36928
36336
  /**
36929
36337
  * @publicApi
36930
36338
  */
@@ -37469,8 +36877,6 @@ function collectPropertyBindings(properties, tNode, lView, tData) {
37469
36877
  }
37470
36878
  }
37471
36879
  }
37472
- // Need to keep the nodes in a global Map so that multiple angular apps are supported.
37473
- const _nativeNodeToDebugNode = new Map();
37474
36880
  const NG_DEBUG_PROPERTY = '__ng_debug__';
37475
36881
  /**
37476
36882
  * @publicApi
@@ -37487,15 +36893,6 @@ function getDebugNode(nativeNode) {
37487
36893
  }
37488
36894
  return null;
37489
36895
  }
37490
- function getAllDebugNodes() {
37491
- return Array.from(_nativeNodeToDebugNode.values());
37492
- }
37493
- function indexDebugNode(node) {
37494
- _nativeNodeToDebugNode.set(node.nativeNode, node);
37495
- }
37496
- function removeDebugNodeFromIndex(node) {
37497
- _nativeNodeToDebugNode.delete(node.nativeNode);
37498
- }
37499
36896
 
37500
36897
  class DefaultIterableDifferFactory {
37501
36898
  constructor() { }
@@ -38551,12 +37948,6 @@ const iterableDiff = [new DefaultIterableDifferFactory()];
38551
37948
  const defaultIterableDiffers = new IterableDiffers(iterableDiff);
38552
37949
  const defaultKeyValueDiffers = new KeyValueDiffers(keyValDiff);
38553
37950
 
38554
- /**
38555
- * @module
38556
- * @description
38557
- * Change detection enables data binding in Angular.
38558
- */
38559
-
38560
37951
  /**
38561
37952
  * This platform has to be included in any other platform
38562
37953
  *
@@ -38582,658 +37973,6 @@ class ApplicationModule {
38582
37973
  type: NgModule
38583
37974
  }], () => [{ type: ApplicationRef }], null); })();
38584
37975
 
38585
- /**
38586
- * The default equality function used for `signal` and `computed`, which uses referential equality.
38587
- */
38588
- function defaultEquals(a, b) {
38589
- return Object.is(a, b);
38590
- }
38591
-
38592
- /**
38593
- * The currently active consumer `ReactiveNode`, if running code in a reactive context.
38594
- *
38595
- * Change this via `setActiveConsumer`.
38596
- */
38597
- let activeConsumer = null;
38598
- let inNotificationPhase = false;
38599
- /**
38600
- * Global epoch counter. Incremented whenever a source signal is set.
38601
- */
38602
- let epoch = 1;
38603
- /**
38604
- * Symbol used to tell `Signal`s apart from other functions.
38605
- *
38606
- * This can be used to auto-unwrap signals in various cases, or to auto-wrap non-signal values.
38607
- */
38608
- const SIGNAL = /* @__PURE__ */ Symbol('SIGNAL');
38609
- function setActiveConsumer(consumer) {
38610
- const prev = activeConsumer;
38611
- activeConsumer = consumer;
38612
- return prev;
38613
- }
38614
- function getActiveConsumer() {
38615
- return activeConsumer;
38616
- }
38617
- function isInNotificationPhase() {
38618
- return inNotificationPhase;
38619
- }
38620
- function isReactive(value) {
38621
- return value[SIGNAL] !== undefined;
38622
- }
38623
- const REACTIVE_NODE = {
38624
- version: 0,
38625
- lastCleanEpoch: 0,
38626
- dirty: false,
38627
- producerNode: undefined,
38628
- producerLastReadVersion: undefined,
38629
- producerIndexOfThis: undefined,
38630
- nextProducerIndex: 0,
38631
- liveConsumerNode: undefined,
38632
- liveConsumerIndexOfThis: undefined,
38633
- consumerAllowSignalWrites: false,
38634
- consumerIsAlwaysLive: false,
38635
- kind: 'unknown',
38636
- producerMustRecompute: () => false,
38637
- producerRecomputeValue: () => { },
38638
- consumerMarkedDirty: () => { },
38639
- consumerOnSignalRead: () => { },
38640
- };
38641
- /**
38642
- * Called by implementations when a producer's signal is read.
38643
- */
38644
- function producerAccessed(node) {
38645
- if (inNotificationPhase) {
38646
- throw new Error(typeof ngDevMode !== 'undefined' && ngDevMode
38647
- ? `Assertion error: signal read during notification phase`
38648
- : '');
38649
- }
38650
- if (activeConsumer === null) {
38651
- // Accessed outside of a reactive context, so nothing to record.
38652
- return;
38653
- }
38654
- activeConsumer.consumerOnSignalRead(node);
38655
- // This producer is the `idx`th dependency of `activeConsumer`.
38656
- const idx = activeConsumer.nextProducerIndex++;
38657
- assertConsumerNode(activeConsumer);
38658
- if (idx < activeConsumer.producerNode.length && activeConsumer.producerNode[idx] !== node) {
38659
- // There's been a change in producers since the last execution of `activeConsumer`.
38660
- // `activeConsumer.producerNode[idx]` holds a stale dependency which will be be removed and
38661
- // replaced with `this`.
38662
- //
38663
- // If `activeConsumer` isn't live, then this is a no-op, since we can replace the producer in
38664
- // `activeConsumer.producerNode` directly. However, if `activeConsumer` is live, then we need
38665
- // to remove it from the stale producer's `liveConsumer`s.
38666
- if (consumerIsLive(activeConsumer)) {
38667
- const staleProducer = activeConsumer.producerNode[idx];
38668
- producerRemoveLiveConsumerAtIndex(staleProducer, activeConsumer.producerIndexOfThis[idx]);
38669
- // At this point, the only record of `staleProducer` is the reference at
38670
- // `activeConsumer.producerNode[idx]` which will be overwritten below.
38671
- }
38672
- }
38673
- if (activeConsumer.producerNode[idx] !== node) {
38674
- // We're a new dependency of the consumer (at `idx`).
38675
- activeConsumer.producerNode[idx] = node;
38676
- // If the active consumer is live, then add it as a live consumer. If not, then use 0 as a
38677
- // placeholder value.
38678
- activeConsumer.producerIndexOfThis[idx] = consumerIsLive(activeConsumer)
38679
- ? producerAddLiveConsumer(node, activeConsumer, idx)
38680
- : 0;
38681
- }
38682
- activeConsumer.producerLastReadVersion[idx] = node.version;
38683
- }
38684
- /**
38685
- * Increment the global epoch counter.
38686
- *
38687
- * Called by source producers (that is, not computeds) whenever their values change.
38688
- */
38689
- function producerIncrementEpoch() {
38690
- epoch++;
38691
- }
38692
- /**
38693
- * Ensure this producer's `version` is up-to-date.
38694
- */
38695
- function producerUpdateValueVersion(node) {
38696
- if (consumerIsLive(node) && !node.dirty) {
38697
- // A live consumer will be marked dirty by producers, so a clean state means that its version
38698
- // is guaranteed to be up-to-date.
38699
- return;
38700
- }
38701
- if (!node.dirty && node.lastCleanEpoch === epoch) {
38702
- // Even non-live consumers can skip polling if they previously found themselves to be clean at
38703
- // the current epoch, since their dependencies could not possibly have changed (such a change
38704
- // would've increased the epoch).
38705
- return;
38706
- }
38707
- if (!node.producerMustRecompute(node) && !consumerPollProducersForChange(node)) {
38708
- // None of our producers report a change since the last time they were read, so no
38709
- // recomputation of our value is necessary, and we can consider ourselves clean.
38710
- producerMarkClean(node);
38711
- return;
38712
- }
38713
- node.producerRecomputeValue(node);
38714
- // After recomputing the value, we're no longer dirty.
38715
- producerMarkClean(node);
38716
- }
38717
- /**
38718
- * Propagate a dirty notification to live consumers of this producer.
38719
- */
38720
- function producerNotifyConsumers(node) {
38721
- if (node.liveConsumerNode === undefined) {
38722
- return;
38723
- }
38724
- // Prevent signal reads when we're updating the graph
38725
- const prev = inNotificationPhase;
38726
- inNotificationPhase = true;
38727
- try {
38728
- for (const consumer of node.liveConsumerNode) {
38729
- if (!consumer.dirty) {
38730
- consumerMarkDirty(consumer);
38731
- }
38732
- }
38733
- }
38734
- finally {
38735
- inNotificationPhase = prev;
38736
- }
38737
- }
38738
- /**
38739
- * Whether this `ReactiveNode` in its producer capacity is currently allowed to initiate updates,
38740
- * based on the current consumer context.
38741
- */
38742
- function producerUpdatesAllowed() {
38743
- return activeConsumer?.consumerAllowSignalWrites !== false;
38744
- }
38745
- function consumerMarkDirty(node) {
38746
- node.dirty = true;
38747
- producerNotifyConsumers(node);
38748
- node.consumerMarkedDirty?.(node);
38749
- }
38750
- function producerMarkClean(node) {
38751
- node.dirty = false;
38752
- node.lastCleanEpoch = epoch;
38753
- }
38754
- /**
38755
- * Prepare this consumer to run a computation in its reactive context.
38756
- *
38757
- * Must be called by subclasses which represent reactive computations, before those computations
38758
- * begin.
38759
- */
38760
- function consumerBeforeComputation(node) {
38761
- node && (node.nextProducerIndex = 0);
38762
- return setActiveConsumer(node);
38763
- }
38764
- /**
38765
- * Finalize this consumer's state after a reactive computation has run.
38766
- *
38767
- * Must be called by subclasses which represent reactive computations, after those computations
38768
- * have finished.
38769
- */
38770
- function consumerAfterComputation(node, prevConsumer) {
38771
- setActiveConsumer(prevConsumer);
38772
- if (!node ||
38773
- node.producerNode === undefined ||
38774
- node.producerIndexOfThis === undefined ||
38775
- node.producerLastReadVersion === undefined) {
38776
- return;
38777
- }
38778
- if (consumerIsLive(node)) {
38779
- // For live consumers, we need to remove the producer -> consumer edge for any stale producers
38780
- // which weren't dependencies after the recomputation.
38781
- for (let i = node.nextProducerIndex; i < node.producerNode.length; i++) {
38782
- producerRemoveLiveConsumerAtIndex(node.producerNode[i], node.producerIndexOfThis[i]);
38783
- }
38784
- }
38785
- // Truncate the producer tracking arrays.
38786
- // Perf note: this is essentially truncating the length to `node.nextProducerIndex`, but
38787
- // benchmarking has shown that individual pop operations are faster.
38788
- while (node.producerNode.length > node.nextProducerIndex) {
38789
- node.producerNode.pop();
38790
- node.producerLastReadVersion.pop();
38791
- node.producerIndexOfThis.pop();
38792
- }
38793
- }
38794
- /**
38795
- * Determine whether this consumer has any dependencies which have changed since the last time
38796
- * they were read.
38797
- */
38798
- function consumerPollProducersForChange(node) {
38799
- assertConsumerNode(node);
38800
- // Poll producers for change.
38801
- for (let i = 0; i < node.producerNode.length; i++) {
38802
- const producer = node.producerNode[i];
38803
- const seenVersion = node.producerLastReadVersion[i];
38804
- // First check the versions. A mismatch means that the producer's value is known to have
38805
- // changed since the last time we read it.
38806
- if (seenVersion !== producer.version) {
38807
- return true;
38808
- }
38809
- // The producer's version is the same as the last time we read it, but it might itself be
38810
- // stale. Force the producer to recompute its version (calculating a new value if necessary).
38811
- producerUpdateValueVersion(producer);
38812
- // Now when we do this check, `producer.version` is guaranteed to be up to date, so if the
38813
- // versions still match then it has not changed since the last time we read it.
38814
- if (seenVersion !== producer.version) {
38815
- return true;
38816
- }
38817
- }
38818
- return false;
38819
- }
38820
- /**
38821
- * Disconnect this consumer from the graph.
38822
- */
38823
- function consumerDestroy(node) {
38824
- assertConsumerNode(node);
38825
- if (consumerIsLive(node)) {
38826
- // Drop all connections from the graph to this node.
38827
- for (let i = 0; i < node.producerNode.length; i++) {
38828
- producerRemoveLiveConsumerAtIndex(node.producerNode[i], node.producerIndexOfThis[i]);
38829
- }
38830
- }
38831
- // Truncate all the arrays to drop all connection from this node to the graph.
38832
- node.producerNode.length =
38833
- node.producerLastReadVersion.length =
38834
- node.producerIndexOfThis.length =
38835
- 0;
38836
- if (node.liveConsumerNode) {
38837
- node.liveConsumerNode.length = node.liveConsumerIndexOfThis.length = 0;
38838
- }
38839
- }
38840
- /**
38841
- * Add `consumer` as a live consumer of this node.
38842
- *
38843
- * Note that this operation is potentially transitive. If this node becomes live, then it becomes
38844
- * a live consumer of all of its current producers.
38845
- */
38846
- function producerAddLiveConsumer(node, consumer, indexOfThis) {
38847
- assertProducerNode(node);
38848
- if (node.liveConsumerNode.length === 0 && isConsumerNode(node)) {
38849
- // When going from 0 to 1 live consumers, we become a live consumer to our producers.
38850
- for (let i = 0; i < node.producerNode.length; i++) {
38851
- node.producerIndexOfThis[i] = producerAddLiveConsumer(node.producerNode[i], node, i);
38852
- }
38853
- }
38854
- node.liveConsumerIndexOfThis.push(indexOfThis);
38855
- return node.liveConsumerNode.push(consumer) - 1;
38856
- }
38857
- /**
38858
- * Remove the live consumer at `idx`.
38859
- */
38860
- function producerRemoveLiveConsumerAtIndex(node, idx) {
38861
- assertProducerNode(node);
38862
- if (typeof ngDevMode !== 'undefined' && ngDevMode && idx >= node.liveConsumerNode.length) {
38863
- throw new Error(`Assertion error: active consumer index ${idx} is out of bounds of ${node.liveConsumerNode.length} consumers)`);
38864
- }
38865
- if (node.liveConsumerNode.length === 1 && isConsumerNode(node)) {
38866
- // When removing the last live consumer, we will no longer be live. We need to remove
38867
- // ourselves from our producers' tracking (which may cause consumer-producers to lose
38868
- // liveness as well).
38869
- for (let i = 0; i < node.producerNode.length; i++) {
38870
- producerRemoveLiveConsumerAtIndex(node.producerNode[i], node.producerIndexOfThis[i]);
38871
- }
38872
- }
38873
- // Move the last value of `liveConsumers` into `idx`. Note that if there's only a single
38874
- // live consumer, this is a no-op.
38875
- const lastIdx = node.liveConsumerNode.length - 1;
38876
- node.liveConsumerNode[idx] = node.liveConsumerNode[lastIdx];
38877
- node.liveConsumerIndexOfThis[idx] = node.liveConsumerIndexOfThis[lastIdx];
38878
- // Truncate the array.
38879
- node.liveConsumerNode.length--;
38880
- node.liveConsumerIndexOfThis.length--;
38881
- // If the index is still valid, then we need to fix the index pointer from the producer to this
38882
- // consumer, and update it from `lastIdx` to `idx` (accounting for the move above).
38883
- if (idx < node.liveConsumerNode.length) {
38884
- const idxProducer = node.liveConsumerIndexOfThis[idx];
38885
- const consumer = node.liveConsumerNode[idx];
38886
- assertConsumerNode(consumer);
38887
- consumer.producerIndexOfThis[idxProducer] = idx;
38888
- }
38889
- }
38890
- function consumerIsLive(node) {
38891
- return node.consumerIsAlwaysLive || (node?.liveConsumerNode?.length ?? 0) > 0;
38892
- }
38893
- function assertConsumerNode(node) {
38894
- node.producerNode ??= [];
38895
- node.producerIndexOfThis ??= [];
38896
- node.producerLastReadVersion ??= [];
38897
- }
38898
- function assertProducerNode(node) {
38899
- node.liveConsumerNode ??= [];
38900
- node.liveConsumerIndexOfThis ??= [];
38901
- }
38902
- function isConsumerNode(node) {
38903
- return node.producerNode !== undefined;
38904
- }
38905
-
38906
- /**
38907
- * Create a computed signal which derives a reactive value from an expression.
38908
- */
38909
- function createComputed(computation) {
38910
- const node = Object.create(COMPUTED_NODE);
38911
- node.computation = computation;
38912
- const computed = () => {
38913
- // Check if the value needs updating before returning it.
38914
- producerUpdateValueVersion(node);
38915
- // Record that someone looked at this signal.
38916
- producerAccessed(node);
38917
- if (node.value === ERRORED) {
38918
- throw node.error;
38919
- }
38920
- return node.value;
38921
- };
38922
- computed[SIGNAL] = node;
38923
- return computed;
38924
- }
38925
- /**
38926
- * A dedicated symbol used before a computed value has been calculated for the first time.
38927
- * Explicitly typed as `any` so we can use it as signal's value.
38928
- */
38929
- const UNSET = /* @__PURE__ */ Symbol('UNSET');
38930
- /**
38931
- * A dedicated symbol used in place of a computed signal value to indicate that a given computation
38932
- * is in progress. Used to detect cycles in computation chains.
38933
- * Explicitly typed as `any` so we can use it as signal's value.
38934
- */
38935
- const COMPUTING = /* @__PURE__ */ Symbol('COMPUTING');
38936
- /**
38937
- * A dedicated symbol used in place of a computed signal value to indicate that a given computation
38938
- * failed. The thrown error is cached until the computation gets dirty again.
38939
- * Explicitly typed as `any` so we can use it as signal's value.
38940
- */
38941
- const ERRORED = /* @__PURE__ */ Symbol('ERRORED');
38942
- // Note: Using an IIFE here to ensure that the spread assignment is not considered
38943
- // a side-effect, ending up preserving `COMPUTED_NODE` and `REACTIVE_NODE`.
38944
- // TODO: remove when https://github.com/evanw/esbuild/issues/3392 is resolved.
38945
- const COMPUTED_NODE = /* @__PURE__ */ (() => {
38946
- return {
38947
- ...REACTIVE_NODE,
38948
- value: UNSET,
38949
- dirty: true,
38950
- error: null,
38951
- equal: defaultEquals,
38952
- kind: 'computed',
38953
- producerMustRecompute(node) {
38954
- // Force a recomputation if there's no current value, or if the current value is in the
38955
- // process of being calculated (which should throw an error).
38956
- return node.value === UNSET || node.value === COMPUTING;
38957
- },
38958
- producerRecomputeValue(node) {
38959
- if (node.value === COMPUTING) {
38960
- // Our computation somehow led to a cyclic read of itself.
38961
- throw new Error('Detected cycle in computations.');
38962
- }
38963
- const oldValue = node.value;
38964
- node.value = COMPUTING;
38965
- const prevConsumer = consumerBeforeComputation(node);
38966
- let newValue;
38967
- let wasEqual = false;
38968
- try {
38969
- newValue = node.computation();
38970
- // We want to mark this node as errored if calling `equal` throws; however, we don't want
38971
- // to track any reactive reads inside `equal`.
38972
- setActiveConsumer(null);
38973
- wasEqual =
38974
- oldValue !== UNSET &&
38975
- oldValue !== ERRORED &&
38976
- newValue !== ERRORED &&
38977
- node.equal(oldValue, newValue);
38978
- }
38979
- catch (err) {
38980
- newValue = ERRORED;
38981
- node.error = err;
38982
- }
38983
- finally {
38984
- consumerAfterComputation(node, prevConsumer);
38985
- }
38986
- if (wasEqual) {
38987
- // No change to `valueVersion` - old and new values are
38988
- // semantically equivalent.
38989
- node.value = oldValue;
38990
- return;
38991
- }
38992
- node.value = newValue;
38993
- node.version++;
38994
- },
38995
- };
38996
- })();
38997
-
38998
- function defaultThrowError() {
38999
- throw new Error();
39000
- }
39001
- let throwInvalidWriteToSignalErrorFn = defaultThrowError;
39002
- function throwInvalidWriteToSignalError(node) {
39003
- throwInvalidWriteToSignalErrorFn(node);
39004
- }
39005
- function setThrowInvalidWriteToSignalError(fn) {
39006
- throwInvalidWriteToSignalErrorFn = fn;
39007
- }
39008
-
39009
- /**
39010
- * If set, called after `WritableSignal`s are updated.
39011
- *
39012
- * This hook can be used to achieve various effects, such as running effects synchronously as part
39013
- * of setting a signal.
39014
- */
39015
- let postSignalSetFn = null;
39016
- /**
39017
- * Create a `Signal` that can be set or updated directly.
39018
- */
39019
- function createSignal(initialValue) {
39020
- const node = Object.create(SIGNAL_NODE);
39021
- node.value = initialValue;
39022
- const getter = (() => {
39023
- producerAccessed(node);
39024
- return node.value;
39025
- });
39026
- getter[SIGNAL] = node;
39027
- return getter;
39028
- }
39029
- function setPostSignalSetFn(fn) {
39030
- const prev = postSignalSetFn;
39031
- postSignalSetFn = fn;
39032
- return prev;
39033
- }
39034
- function signalGetFn() {
39035
- producerAccessed(this);
39036
- return this.value;
39037
- }
39038
- function signalSetFn(node, newValue) {
39039
- if (!producerUpdatesAllowed()) {
39040
- throwInvalidWriteToSignalError(node);
39041
- }
39042
- if (!node.equal(node.value, newValue)) {
39043
- node.value = newValue;
39044
- signalValueChanged(node);
39045
- }
39046
- }
39047
- function signalUpdateFn(node, updater) {
39048
- if (!producerUpdatesAllowed()) {
39049
- throwInvalidWriteToSignalError(node);
39050
- }
39051
- signalSetFn(node, updater(node.value));
39052
- }
39053
- function runPostSignalSetFn() {
39054
- postSignalSetFn?.();
39055
- }
39056
- // Note: Using an IIFE here to ensure that the spread assignment is not considered
39057
- // a side-effect, ending up preserving `COMPUTED_NODE` and `REACTIVE_NODE`.
39058
- // TODO: remove when https://github.com/evanw/esbuild/issues/3392 is resolved.
39059
- const SIGNAL_NODE = /* @__PURE__ */ (() => {
39060
- return {
39061
- ...REACTIVE_NODE,
39062
- equal: defaultEquals,
39063
- value: undefined,
39064
- kind: 'signal',
39065
- };
39066
- })();
39067
- function signalValueChanged(node) {
39068
- node.version++;
39069
- producerIncrementEpoch();
39070
- producerNotifyConsumers(node);
39071
- postSignalSetFn?.();
39072
- }
39073
-
39074
- function createLinkedSignal(sourceFn, computationFn, equalityFn) {
39075
- const node = Object.create(LINKED_SIGNAL_NODE);
39076
- node.source = sourceFn;
39077
- node.computation = computationFn;
39078
- if (equalityFn != undefined) {
39079
- node.equal = equalityFn;
39080
- }
39081
- const linkedSignalGetter = () => {
39082
- // Check if the value needs updating before returning it.
39083
- producerUpdateValueVersion(node);
39084
- // Record that someone looked at this signal.
39085
- producerAccessed(node);
39086
- if (node.value === ERRORED) {
39087
- throw node.error;
39088
- }
39089
- return node.value;
39090
- };
39091
- const getter = linkedSignalGetter;
39092
- getter[SIGNAL] = node;
39093
- return getter;
39094
- }
39095
- function linkedSignalSetFn(node, newValue) {
39096
- producerUpdateValueVersion(node);
39097
- signalSetFn(node, newValue);
39098
- producerMarkClean(node);
39099
- }
39100
- function linkedSignalUpdateFn(node, updater) {
39101
- producerUpdateValueVersion(node);
39102
- signalUpdateFn(node, updater);
39103
- producerMarkClean(node);
39104
- }
39105
- // Note: Using an IIFE here to ensure that the spread assignment is not considered
39106
- // a side-effect, ending up preserving `LINKED_SIGNAL_NODE` and `REACTIVE_NODE`.
39107
- // TODO: remove when https://github.com/evanw/esbuild/issues/3392 is resolved.
39108
- const LINKED_SIGNAL_NODE = /* @__PURE__ */ (() => {
39109
- return {
39110
- ...REACTIVE_NODE,
39111
- value: UNSET,
39112
- dirty: true,
39113
- error: null,
39114
- equal: defaultEquals,
39115
- producerMustRecompute(node) {
39116
- // Force a recomputation if there's no current value, or if the current value is in the
39117
- // process of being calculated (which should throw an error).
39118
- return node.value === UNSET || node.value === COMPUTING;
39119
- },
39120
- producerRecomputeValue(node) {
39121
- if (node.value === COMPUTING) {
39122
- // Our computation somehow led to a cyclic read of itself.
39123
- throw new Error('Detected cycle in computations.');
39124
- }
39125
- const oldValue = node.value;
39126
- node.value = COMPUTING;
39127
- const prevConsumer = consumerBeforeComputation(node);
39128
- let newValue;
39129
- try {
39130
- const newSourceValue = node.source();
39131
- const prev = oldValue === UNSET || oldValue === ERRORED
39132
- ? undefined
39133
- : {
39134
- source: node.sourceValue,
39135
- value: oldValue,
39136
- };
39137
- newValue = node.computation(newSourceValue, prev);
39138
- node.sourceValue = newSourceValue;
39139
- }
39140
- catch (err) {
39141
- newValue = ERRORED;
39142
- node.error = err;
39143
- }
39144
- finally {
39145
- consumerAfterComputation(node, prevConsumer);
39146
- }
39147
- if (oldValue !== UNSET && newValue !== ERRORED && node.equal(oldValue, newValue)) {
39148
- // No change to `valueVersion` - old and new values are
39149
- // semantically equivalent.
39150
- node.value = oldValue;
39151
- return;
39152
- }
39153
- node.value = newValue;
39154
- node.version++;
39155
- },
39156
- };
39157
- })();
39158
-
39159
- function createWatch(fn, schedule, allowSignalWrites) {
39160
- const node = Object.create(WATCH_NODE);
39161
- if (allowSignalWrites) {
39162
- node.consumerAllowSignalWrites = true;
39163
- }
39164
- node.fn = fn;
39165
- node.schedule = schedule;
39166
- const registerOnCleanup = (cleanupFn) => {
39167
- node.cleanupFn = cleanupFn;
39168
- };
39169
- function isWatchNodeDestroyed(node) {
39170
- return node.fn === null && node.schedule === null;
39171
- }
39172
- function destroyWatchNode(node) {
39173
- if (!isWatchNodeDestroyed(node)) {
39174
- consumerDestroy(node); // disconnect watcher from the reactive graph
39175
- node.cleanupFn();
39176
- // nullify references to the integration functions to mark node as destroyed
39177
- node.fn = null;
39178
- node.schedule = null;
39179
- node.cleanupFn = NOOP_CLEANUP_FN;
39180
- }
39181
- }
39182
- const run = () => {
39183
- if (node.fn === null) {
39184
- // trying to run a destroyed watch is noop
39185
- return;
39186
- }
39187
- if (isInNotificationPhase()) {
39188
- throw new Error(`Schedulers cannot synchronously execute watches while scheduling.`);
39189
- }
39190
- node.dirty = false;
39191
- if (node.hasRun && !consumerPollProducersForChange(node)) {
39192
- return;
39193
- }
39194
- node.hasRun = true;
39195
- const prevConsumer = consumerBeforeComputation(node);
39196
- try {
39197
- node.cleanupFn();
39198
- node.cleanupFn = NOOP_CLEANUP_FN;
39199
- node.fn(registerOnCleanup);
39200
- }
39201
- finally {
39202
- consumerAfterComputation(node, prevConsumer);
39203
- }
39204
- };
39205
- node.ref = {
39206
- notify: () => consumerMarkDirty(node),
39207
- run,
39208
- cleanup: () => node.cleanupFn(),
39209
- destroy: () => destroyWatchNode(node),
39210
- [SIGNAL]: node,
39211
- };
39212
- return node.ref;
39213
- }
39214
- const NOOP_CLEANUP_FN = () => { };
39215
- // Note: Using an IIFE here to ensure that the spread assignment is not considered
39216
- // a side-effect, ending up preserving `COMPUTED_NODE` and `REACTIVE_NODE`.
39217
- // TODO: remove when https://github.com/evanw/esbuild/issues/3392 is resolved.
39218
- const WATCH_NODE = /* @__PURE__ */ (() => {
39219
- return {
39220
- ...REACTIVE_NODE,
39221
- consumerIsAlwaysLive: true,
39222
- consumerAllowSignalWrites: false,
39223
- consumerMarkedDirty: (node) => {
39224
- if (node.schedule !== null) {
39225
- node.schedule(node.ref);
39226
- }
39227
- },
39228
- hasRun: false,
39229
- cleanupFn: NOOP_CLEANUP_FN,
39230
- };
39231
- })();
39232
-
39233
- function setAlternateWeakRefImpl(impl) {
39234
- // TODO: remove this function
39235
- }
39236
-
39237
37976
  /**
39238
37977
  * Internal create application API that implements the core application creation logic and optional
39239
37978
  * bootstrap logic.
@@ -39328,8 +38067,8 @@ function withEventReplay() {
39328
38067
  providers.push({
39329
38068
  provide: ENVIRONMENT_INITIALIZER,
39330
38069
  useValue: () => {
39331
- const injector = inject(Injector);
39332
- const appRef = injector.get(ApplicationRef);
38070
+ const appRef = inject(ApplicationRef);
38071
+ const { injector } = appRef;
39333
38072
  // We have to check for the appRef here due to the possibility of multiple apps
39334
38073
  // being present on the same page. We only want to enable event replay for the
39335
38074
  // apps that actually want it.
@@ -39353,8 +38092,8 @@ function withEventReplay() {
39353
38092
  provide: APP_BOOTSTRAP_LISTENER,
39354
38093
  useFactory: () => {
39355
38094
  const appId = inject(APP_ID);
39356
- const injector = inject(Injector);
39357
38095
  const appRef = inject(ApplicationRef);
38096
+ const { injector } = appRef;
39358
38097
  return () => {
39359
38098
  // We have to check for the appRef here due to the possibility of multiple apps
39360
38099
  // being present on the same page. We only want to enable event replay for the
@@ -39381,6 +38120,15 @@ function withEventReplay() {
39381
38120
  // of the application is completed. This timing is similar to the unclaimed
39382
38121
  // dehydrated views cleanup timing.
39383
38122
  appRef.whenStable().then(() => {
38123
+ // Note: we have to check whether the application is destroyed before
38124
+ // performing other operations with the `injector`.
38125
+ // The application may be destroyed **before** it becomes stable, so when
38126
+ // the `whenStable` resolves, the injector might already be in
38127
+ // a destroyed state. Thus, calling `injector.get` would throw an error
38128
+ // indicating that the injector has already been destroyed.
38129
+ if (appRef.destroyed) {
38130
+ return;
38131
+ }
39384
38132
  const eventContractDetails = injector.get(JSACTION_EVENT_CONTRACT);
39385
38133
  initEventReplay(eventContractDetails, injector);
39386
38134
  const jsActionMap = injector.get(JSACTION_BLOCK_ELEMENT_MAP);
@@ -39585,7 +38333,7 @@ function annotateComponentLViewForHydration(lView, context, injector) {
39585
38333
  function annotateLContainerForHydration(lContainer, context, injector) {
39586
38334
  const componentLView = unwrapLView(lContainer[HOST]);
39587
38335
  // Serialize the root component itself.
39588
- const componentLViewNghIndex = annotateComponentLViewForHydration(componentLView, context, injector);
38336
+ const componentLViewNghIndex = annotateComponentLViewForHydration(componentLView, context);
39589
38337
  if (componentLViewNghIndex === null) {
39590
38338
  // Component was not serialized (for example, if hydration was skipped by adding
39591
38339
  // the `ngSkipHydration` attribute or this component uses i18n blocks in the template,
@@ -39632,7 +38380,7 @@ function annotateForHydration(appRef, doc) {
39632
38380
  capture: new Set(),
39633
38381
  };
39634
38382
  const deferBlocks = new Map();
39635
- const appId = appRef.injector.get(APP_ID);
38383
+ appRef.injector.get(APP_ID);
39636
38384
  for (const viewRef of viewRefs) {
39637
38385
  const lNode = getLNodeForHydration(viewRef);
39638
38386
  // An `lView` might be `null` if a `ViewRef` represents
@@ -39646,14 +38394,13 @@ function annotateForHydration(appRef, doc) {
39646
38394
  i18nChildren: new Map(),
39647
38395
  eventTypesToReplay,
39648
38396
  shouldReplayEvents,
39649
- appId,
39650
38397
  deferBlocks,
39651
38398
  };
39652
38399
  if (isLContainer(lNode)) {
39653
- annotateLContainerForHydration(lNode, context, injector);
38400
+ annotateLContainerForHydration(lNode, context);
39654
38401
  }
39655
38402
  else {
39656
- annotateComponentLViewForHydration(lNode, context, injector);
38403
+ annotateComponentLViewForHydration(lNode, context);
39657
38404
  }
39658
38405
  insertCorruptedTextNodeMarkers(corruptedTextNodes, doc);
39659
38406
  }
@@ -39708,7 +38455,7 @@ function serializeLContainer(lContainer, tNode, lView, parentDeferBlockId, conte
39708
38455
  // `<app-root /><#VIEW1><#VIEW2>...<!--container-->`
39709
38456
  // The `+1` is to capture the `<app-root />` element.
39710
38457
  numRootNodes = calcNumRootNodesInLContainer(childLView) + 1;
39711
- annotateLContainerForHydration(childLView, context, lView[INJECTOR]);
38458
+ annotateLContainerForHydration(childLView, context);
39712
38459
  const componentLView = unwrapLView(childLView[HOST]);
39713
38460
  serializedView = {
39714
38461
  [TEMPLATE_ID]: componentLView[TVIEW].ssrId,
@@ -40592,14 +39339,14 @@ function disableProfiling() {
40592
39339
  * can, optionally, return a value.
40593
39340
  */
40594
39341
  function untracked(nonReactiveReadsFn) {
40595
- const prevConsumer = setActiveConsumer$1(null);
39342
+ const prevConsumer = setActiveConsumer(null);
40596
39343
  // We are not trying to catch any particular errors here, just making sure that the consumers
40597
39344
  // stack is restored in case of errors.
40598
39345
  try {
40599
39346
  return nonReactiveReadsFn();
40600
39347
  }
40601
39348
  finally {
40602
- setActiveConsumer$1(prevConsumer);
39349
+ setActiveConsumer(prevConsumer);
40603
39350
  }
40604
39351
  }
40605
39352
 
@@ -40607,22 +39354,17 @@ function untracked(nonReactiveReadsFn) {
40607
39354
  * Create a computed `Signal` which derives a reactive value from an expression.
40608
39355
  */
40609
39356
  function computed(computation, options) {
40610
- const getter = createComputed$1(computation);
39357
+ const getter = createComputed(computation);
40611
39358
  if (options?.equal) {
40612
- getter[SIGNAL$1].equal = options.equal;
39359
+ getter[SIGNAL].equal = options.equal;
40613
39360
  }
40614
39361
  if (ngDevMode) {
40615
39362
  getter.toString = () => `[Computed: ${getter()}]`;
40616
- getter[SIGNAL$1].debugName = options?.debugName;
39363
+ getter[SIGNAL].debugName = options?.debugName;
40617
39364
  }
40618
39365
  return getter;
40619
39366
  }
40620
39367
 
40621
- /**
40622
- * Controls whether effects use the legacy `microtaskEffect` by default.
40623
- */
40624
- const USE_MICROTASK_EFFECT_BY_DEFAULT = false;
40625
-
40626
39368
  class MicrotaskEffectScheduler extends ZoneAwareEffectScheduler {
40627
39369
  pendingTasks = inject(PendingTasksInternal);
40628
39370
  taskId = null;
@@ -40671,7 +39413,7 @@ class EffectHandle {
40671
39413
  this.effectFn = effectFn;
40672
39414
  this.zone = zone;
40673
39415
  this.injector = injector;
40674
- this.watcher = createWatch$1((onCleanup) => this.runEffect(onCleanup), () => this.schedule(), allowSignalWrites);
39416
+ this.watcher = createWatch((onCleanup) => this.runEffect(onCleanup), () => this.schedule(), allowSignalWrites);
40675
39417
  this.unregisterOnDestroy = destroyRef?.onDestroy(() => this.destroy());
40676
39418
  }
40677
39419
  runEffect(onCleanup) {
@@ -40733,22 +39475,13 @@ function microtaskEffect(effectFn, options) {
40733
39475
  return handle;
40734
39476
  }
40735
39477
 
40736
- let useMicrotaskEffectsByDefault = USE_MICROTASK_EFFECT_BY_DEFAULT;
40737
- /**
40738
- * Toggle the flag on whether to use microtask effects (for testing).
40739
- */
40740
- function setUseMicrotaskEffectsByDefault(value) {
40741
- const prev = useMicrotaskEffectsByDefault;
40742
- useMicrotaskEffectsByDefault = value;
40743
- return prev;
40744
- }
40745
39478
  class EffectRefImpl {
40746
- [SIGNAL$1];
39479
+ [SIGNAL];
40747
39480
  constructor(node) {
40748
- this[SIGNAL$1] = node;
39481
+ this[SIGNAL] = node;
40749
39482
  }
40750
39483
  destroy() {
40751
- this[SIGNAL$1].destroy();
39484
+ this[SIGNAL].destroy();
40752
39485
  }
40753
39486
  }
40754
39487
  /**
@@ -40770,12 +39503,6 @@ class EffectRefImpl {
40770
39503
  * @developerPreview
40771
39504
  */
40772
39505
  function effect(effectFn, options) {
40773
- if (useMicrotaskEffectsByDefault) {
40774
- if (ngDevMode && options?.forceRoot) {
40775
- throw new Error(`Cannot use 'forceRoot' option with microtask effects on`);
40776
- }
40777
- return microtaskEffect(effectFn, options);
40778
- }
40779
39506
  ngDevMode &&
40780
39507
  assertNotInReactiveContext(effect, 'Call `effect` outside of a reactive context. For example, schedule the ' +
40781
39508
  'effect inside the component constructor.');
@@ -40823,13 +39550,13 @@ function effect(effectFn, options) {
40823
39550
  * Not public API, which guarantees `EffectScheduler` only ever comes from the application root
40824
39551
  * injector.
40825
39552
  */
40826
- const APP_EFFECT_SCHEDULER = /* @__PURE__ */ new InjectionToken('', {
39553
+ /* @__PURE__ */ new InjectionToken('', {
40827
39554
  providedIn: 'root',
40828
39555
  factory: () => inject(EffectScheduler),
40829
39556
  });
40830
39557
  const BASE_EFFECT_NODE =
40831
39558
  /* @__PURE__ */ (() => ({
40832
- ...REACTIVE_NODE$1,
39559
+ ...REACTIVE_NODE,
40833
39560
  consumerIsAlwaysLive: true,
40834
39561
  consumerAllowSignalWrites: true,
40835
39562
  dirty: true,
@@ -40840,15 +39567,15 @@ const BASE_EFFECT_NODE =
40840
39567
  onDestroyFn: noop,
40841
39568
  run() {
40842
39569
  this.dirty = false;
40843
- if (ngDevMode && isInNotificationPhase$1()) {
39570
+ if (ngDevMode && isInNotificationPhase()) {
40844
39571
  throw new Error(`Schedulers cannot synchronously execute watches while scheduling.`);
40845
39572
  }
40846
- if (this.hasRun && !consumerPollProducersForChange$1(this)) {
39573
+ if (this.hasRun && !consumerPollProducersForChange(this)) {
40847
39574
  return;
40848
39575
  }
40849
39576
  this.hasRun = true;
40850
39577
  const registerCleanupFn = (cleanupFn) => (this.cleanupFns ??= []).push(cleanupFn);
40851
- const prevNode = consumerBeforeComputation$1(this);
39578
+ const prevNode = consumerBeforeComputation(this);
40852
39579
  // We clear `setIsRefreshingViews` so that `markForCheck()` within the body of an effect will
40853
39580
  // cause CD to reach the component in question.
40854
39581
  const prevRefreshingViews = setIsRefreshingViews(false);
@@ -40858,7 +39585,7 @@ const BASE_EFFECT_NODE =
40858
39585
  }
40859
39586
  finally {
40860
39587
  setIsRefreshingViews(prevRefreshingViews);
40861
- consumerAfterComputation$1(this, prevNode);
39588
+ consumerAfterComputation(this, prevNode);
40862
39589
  }
40863
39590
  },
40864
39591
  maybeCleanup() {
@@ -40886,7 +39613,7 @@ const ROOT_EFFECT_NODE =
40886
39613
  this.notifier.notify(12 /* NotificationSource.RootEffect */);
40887
39614
  },
40888
39615
  destroy() {
40889
- consumerDestroy$1(this);
39616
+ consumerDestroy(this);
40890
39617
  this.onDestroyFn();
40891
39618
  this.maybeCleanup();
40892
39619
  this.scheduler.remove(this);
@@ -40901,7 +39628,7 @@ const VIEW_EFFECT_NODE =
40901
39628
  this.notifier.notify(13 /* NotificationSource.ViewEffect */);
40902
39629
  },
40903
39630
  destroy() {
40904
- consumerDestroy$1(this);
39631
+ consumerDestroy(this);
40905
39632
  this.onDestroyFn();
40906
39633
  this.maybeCleanup();
40907
39634
  this.view[EFFECTS]?.delete(this);
@@ -40973,11 +39700,11 @@ var ResourceStatus;
40973
39700
  const identityFn = (v) => v;
40974
39701
  function linkedSignal(optionsOrComputation, options) {
40975
39702
  if (typeof optionsOrComputation === 'function') {
40976
- const getter = createLinkedSignal$1(optionsOrComputation, (identityFn), options?.equal);
39703
+ const getter = createLinkedSignal(optionsOrComputation, (identityFn), options?.equal);
40977
39704
  return upgradeLinkedSignalGetter(getter);
40978
39705
  }
40979
39706
  else {
40980
- const getter = createLinkedSignal$1(optionsOrComputation.source, optionsOrComputation.computation, optionsOrComputation.equal);
39707
+ const getter = createLinkedSignal(optionsOrComputation.source, optionsOrComputation.computation, optionsOrComputation.equal);
40981
39708
  return upgradeLinkedSignalGetter(getter);
40982
39709
  }
40983
39710
  }
@@ -40985,10 +39712,10 @@ function upgradeLinkedSignalGetter(getter) {
40985
39712
  if (ngDevMode) {
40986
39713
  getter.toString = () => `[LinkedSignal: ${getter()}]`;
40987
39714
  }
40988
- const node = getter[SIGNAL$1];
39715
+ const node = getter[SIGNAL];
40989
39716
  const upgradedGetter = getter;
40990
- upgradedGetter.set = (newValue) => linkedSignalSetFn$1(node, newValue);
40991
- upgradedGetter.update = (updateFn) => linkedSignalUpdateFn$1(node, updateFn);
39717
+ upgradedGetter.set = (newValue) => linkedSignalSetFn(node, newValue);
39718
+ upgradedGetter.update = (updateFn) => linkedSignalUpdateFn(node, updateFn);
40992
39719
  upgradedGetter.asReadonly = signalAsReadonlyFn.bind(getter);
40993
39720
  return upgradedGetter;
40994
39721
  }
@@ -41430,12 +40157,10 @@ function ɵɵngDeclarePipe(decl) {
41430
40157
  return compiler.compilePipeDeclaration(angularCoreEnv, `ng:///${decl.type.name}/ɵpipe.js`, decl);
41431
40158
  }
41432
40159
 
41433
- // we reexport these symbols just so that they are retained during the dead code elimination
41434
-
41435
40160
  const NOT_SET = Symbol('NOT_SET');
41436
40161
  const EMPTY_CLEANUP_SET = new Set();
41437
40162
  const AFTER_RENDER_PHASE_EFFECT_NODE = /* @__PURE__ */ (() => ({
41438
- ...SIGNAL_NODE$1,
40163
+ ...SIGNAL_NODE,
41439
40164
  consumerIsAlwaysLive: true,
41440
40165
  consumerAllowSignalWrites: true,
41441
40166
  value: NOT_SET,
@@ -41463,7 +40188,7 @@ const AFTER_RENDER_PHASE_EFFECT_NODE = /* @__PURE__ */ (() => ({
41463
40188
  return this.signal;
41464
40189
  }
41465
40190
  this.dirty = false;
41466
- if (this.value !== NOT_SET && !consumerPollProducersForChange$1(this)) {
40191
+ if (this.value !== NOT_SET && !consumerPollProducersForChange(this)) {
41467
40192
  // None of our producers report a change since the last time they were read, so no
41468
40193
  // recomputation of our value is necessary.
41469
40194
  return this.signal;
@@ -41486,13 +40211,13 @@ const AFTER_RENDER_PHASE_EFFECT_NODE = /* @__PURE__ */ (() => ({
41486
40211
  }
41487
40212
  args.push(this.registerCleanupFn);
41488
40213
  // Call the user's callback in our reactive context.
41489
- const prevConsumer = consumerBeforeComputation$1(this);
40214
+ const prevConsumer = consumerBeforeComputation(this);
41490
40215
  let newValue;
41491
40216
  try {
41492
40217
  newValue = this.userFn.apply(null, args);
41493
40218
  }
41494
40219
  finally {
41495
- consumerAfterComputation$1(this, prevConsumer);
40220
+ consumerAfterComputation(this, prevConsumer);
41496
40221
  }
41497
40222
  if (this.value === NOT_SET || !this.equal(this.value, newValue)) {
41498
40223
  this.value = newValue;
@@ -41536,10 +40261,10 @@ class AfterRenderEffectSequence extends AfterRenderSequence {
41536
40261
  node.userFn = effectHook;
41537
40262
  node.dirty = true;
41538
40263
  node.signal = (() => {
41539
- producerAccessed$1(node);
40264
+ producerAccessed(node);
41540
40265
  return node.value;
41541
40266
  });
41542
- node.signal[SIGNAL$1] = node;
40267
+ node.signal[SIGNAL] = node;
41543
40268
  node.registerCleanupFn = (fn) => (node.cleanup ??= new Set()).add(fn);
41544
40269
  this.nodes[phase] = node;
41545
40270
  // Install the upstream hook which runs the `phaseFn` for this phase.
@@ -41587,8 +40312,6 @@ function afterRenderEffect(callbackOrSpec, options) {
41587
40312
  return sequence;
41588
40313
  }
41589
40314
 
41590
- // This file exists to allow the set of reactivity exports to be modified in g3, as these APIs are
41591
-
41592
40315
  /**
41593
40316
  * Creates a `ComponentRef` instance based on provided component type and a set of options.
41594
40317
  *
@@ -41800,40 +40523,5 @@ const REQUEST_CONTEXT = new InjectionToken(typeof ngDevMode === 'undefined' || n
41800
40523
  factory: () => null,
41801
40524
  });
41802
40525
 
41803
- /**
41804
- * @module
41805
- * @description
41806
- * Entry point from which you should import all public core APIs.
41807
- */
41808
- if (typeof ngDevMode !== 'undefined' && ngDevMode) {
41809
- // This helper is to give a reasonable error message to people upgrading to v9 that have not yet
41810
- // installed `@angular/localize` in their app.
41811
- // tslint:disable-next-line: no-toplevel-property-access
41812
- _global.$localize ??= function () {
41813
- throw new Error('It looks like your application or one of its dependencies is using i18n.\n' +
41814
- 'Angular 9 introduced a global `$localize()` function that needs to be loaded.\n' +
41815
- 'Please run `ng add @angular/localize` from the Angular CLI.\n' +
41816
- "(For non-CLI projects, add `import '@angular/localize/init';` to your `polyfills.ts` file.\n" +
41817
- 'For server-side rendering applications add the import to your `main.server.ts` file.)');
41818
- };
41819
- }
41820
-
41821
- /**
41822
- * @module
41823
- * @description
41824
- * Entry point for all public APIs of this package.
41825
- */
41826
- // This file only reexports content of the `src` folder. Keep it that way.
41827
-
41828
- /* This file is not used to build this module. It is only used during editing
41829
- * by the TypeScript language service and during build for verification. `ngc`
41830
- * replaces this file with production index.ts when it rewrites private symbol
41831
- * names.
41832
- */
41833
-
41834
- /**
41835
- * Generated bundle index. Do not edit.
41836
- */
41837
-
41838
- 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_TAG_NAME, Host, HostAttributeToken, HostBinding, HostListener, INJECTOR$1 as INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, OutputEmitterRef, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, PendingTasks, Pipe, PlatformRef, Query, QueryList, REQUEST, REQUEST_CONTEXT, RESPONSE_INIT, Renderer2, RendererFactory2, RendererStyleFlags2, ResourceStatus, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation, ViewRef, afterNextRender, afterRender, afterRenderEffect, 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, linkedSignal, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, model, numberAttribute, output, platformCore, provideAppInitializer, provideEnvironmentInitializer, provideExperimentalCheckNoChangesForDebug, provideExperimentalZonelessChangeDetection, providePlatformInitializer, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, resource, runInInjectionContext, setTestabilityGetter, signal, untracked, viewChild, viewChildren, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, AfterRenderManager as ɵAfterRenderManager, CONTAINER_HEADER_OFFSET as ɵCONTAINER_HEADER_OFFSET, ChangeDetectionScheduler as ɵChangeDetectionScheduler, ChangeDetectionSchedulerImpl as ɵChangeDetectionSchedulerImpl, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG as ɵDEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR as ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DeferBlockBehavior as ɵDeferBlockBehavior, DeferBlockState as ɵDeferBlockState, ENABLE_ROOT_COMPONENT_BOOTSTRAP as ɵENABLE_ROOT_COMPONENT_BOOTSTRAP, 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, INTERNAL_APPLICATION_ERROR_HANDLER as ɵINTERNAL_APPLICATION_ERROR_HANDLER, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, IS_INCREMENTAL_HYDRATION_ENABLED as ɵIS_INCREMENTAL_HYDRATION_ENABLED, JSACTION_EVENT_CONTRACT as ɵJSACTION_EVENT_CONTRACT, LContext as ɵLContext, LocaleDataIndex as ɵLocaleDataIndex, MicrotaskEffectScheduler as ɵMicrotaskEffectScheduler, 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, PERFORMANCE_MARK_PREFIX as ɵPERFORMANCE_MARK_PREFIX, PROVIDED_NG_ZONE as ɵPROVIDED_NG_ZONE, PendingTasksInternal as ɵPendingTasksInternal, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, ResourceImpl as ɵResourceImpl, RuntimeError as ɵRuntimeError, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, TracingAction as ɵTracingAction, TracingService as ɵTracingService, USE_RUNTIME_DEPS_TRACKER_FOR_JIT as ɵUSE_RUNTIME_DEPS_TRACKER_FOR_JIT, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, ZONELESS_ENABLED as ɵZONELESS_ENABLED, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, annotateForHydration as ɵannotateForHydration, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, depsTracker as ɵdepsTracker, detectChangesInViewIfRequired as ɵdetectChangesInViewIfRequired, devModeEqual as ɵdevModeEqual, disableProfiling as ɵdisableProfiling, enableProfiling as ɵenableProfiling, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn, getClosestComponentName as ɵgetClosestComponentName, getDebugNode as ɵgetDebugNode, getDeferBlocks$1 as ɵgetDeferBlocks, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getOutputDestroyRef as ɵgetOutputDestroyRef, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, internalProvideZoneChangeDetection as ɵinternalProvideZoneChangeDetection, isBoundToModule as ɵisBoundToModule, isComponentDefPendingResolution as ɵisComponentDefPendingResolution, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, isViewDirty as ɵisViewDirty, markForRefresh as ɵmarkForRefresh, microtaskEffect as ɵmicrotaskEffect, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, performanceMarkFeature as ɵperformanceMarkFeature, publishExternalGlobalUtil as ɵpublishExternalGlobalUtil, readHydrationInfo as ɵreadHydrationInfo, registerLocaleData as ɵregisterLocaleData, renderDeferBlockState as ɵrenderDeferBlockState, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, restoreComponentResolutionQueue as ɵrestoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, ɵsetClassDebugInfo, setClassMetadata as ɵsetClassMetadata, setClassMetadataAsync as ɵsetClassMetadataAsync, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setInjectorProfilerContext as ɵsetInjectorProfilerContext, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, startMeasuring as ɵstartMeasuring, stopMeasuring as ɵstopMeasuring, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, triggerResourceLoading as ɵtriggerResourceLoading, truncateMiddle as ɵtruncateMiddle, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵunwrapWritableSignal, withDomHydration as ɵwithDomHydration, withEventReplay as ɵwithEventReplay, withI18nSupport as ɵwithI18nSupport, withIncrementalHydration as ɵwithIncrementalHydration, ɵɵCopyDefinitionFeature, ɵɵExternalStylesFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵattachSourceLocations, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵdeclareLet, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵdeferHydrateNever, ɵɵdeferHydrateOnHover, ɵɵdeferHydrateOnIdle, ɵɵdeferHydrateOnImmediate, ɵɵdeferHydrateOnInteraction, ɵɵdeferHydrateOnTimer, ɵɵdeferHydrateOnViewport, ɵɵdeferHydrateWhen, ɵɵdeferOnHover, ɵɵdeferOnIdle, ɵɵdeferOnImmediate, ɵɵdeferOnInteraction, ɵɵdeferOnTimer, ɵɵdeferOnViewport, ɵɵdeferPrefetchOnHover, ɵɵdeferPrefetchOnIdle, ɵɵdeferPrefetchOnImmediate, ɵɵdeferPrefetchOnInteraction, ɵɵdeferPrefetchOnTimer, ɵɵdeferPrefetchOnViewport, ɵɵdeferPrefetchWhen, ɵɵdeferWhen, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetComponentDepsFactory, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareClassMetadataAsync, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryAdvance, ɵɵqueryRefresh, ɵɵreadContextLet, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵreplaceMetadata, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstoreLet, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateIframeAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
40526
+ 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_TAG_NAME, Host, HostAttributeToken, HostBinding, HostListener, INJECTOR$1 as INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, OutputEmitterRef, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, PendingTasks, Pipe, PlatformRef, Query, QueryList, REQUEST, REQUEST_CONTEXT, RESPONSE_INIT, Renderer2, RendererFactory2, RendererStyleFlags2, ResourceStatus, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation, ViewRef, afterNextRender, afterRender, afterRenderEffect, 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, linkedSignal, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, model, numberAttribute, output, platformCore, provideAppInitializer, provideEnvironmentInitializer, provideExperimentalCheckNoChangesForDebug, provideExperimentalZonelessChangeDetection, providePlatformInitializer, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, resource, runInInjectionContext, setTestabilityGetter, signal, untracked, viewChild, viewChildren, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, AfterRenderManager as ɵAfterRenderManager, CONTAINER_HEADER_OFFSET as ɵCONTAINER_HEADER_OFFSET, ChangeDetectionScheduler as ɵChangeDetectionScheduler, ChangeDetectionSchedulerImpl as ɵChangeDetectionSchedulerImpl, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG as ɵDEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR as ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DeferBlockBehavior as ɵDeferBlockBehavior, DeferBlockState as ɵDeferBlockState, ENABLE_ROOT_COMPONENT_BOOTSTRAP as ɵENABLE_ROOT_COMPONENT_BOOTSTRAP, 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, INTERNAL_APPLICATION_ERROR_HANDLER as ɵINTERNAL_APPLICATION_ERROR_HANDLER, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, IS_INCREMENTAL_HYDRATION_ENABLED as ɵIS_INCREMENTAL_HYDRATION_ENABLED, JSACTION_EVENT_CONTRACT as ɵJSACTION_EVENT_CONTRACT, LContext as ɵLContext, LocaleDataIndex as ɵLocaleDataIndex, MicrotaskEffectScheduler as ɵMicrotaskEffectScheduler, 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, PERFORMANCE_MARK_PREFIX as ɵPERFORMANCE_MARK_PREFIX, PROVIDED_NG_ZONE as ɵPROVIDED_NG_ZONE, PendingTasksInternal as ɵPendingTasksInternal, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, ResourceImpl as ɵResourceImpl, RuntimeError as ɵRuntimeError, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, TracingAction as ɵTracingAction, TracingService as ɵTracingService, USE_RUNTIME_DEPS_TRACKER_FOR_JIT as ɵUSE_RUNTIME_DEPS_TRACKER_FOR_JIT, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, ZONELESS_ENABLED as ɵZONELESS_ENABLED, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, annotateForHydration as ɵannotateForHydration, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, depsTracker as ɵdepsTracker, detectChangesInViewIfRequired as ɵdetectChangesInViewIfRequired, devModeEqual as ɵdevModeEqual, disableProfiling as ɵdisableProfiling, enableProfiling as ɵenableProfiling, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn, getClosestComponentName as ɵgetClosestComponentName, getDebugNode as ɵgetDebugNode, getDeferBlocks$1 as ɵgetDeferBlocks, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getOutputDestroyRef as ɵgetOutputDestroyRef, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, internalProvideZoneChangeDetection as ɵinternalProvideZoneChangeDetection, isBoundToModule as ɵisBoundToModule, isComponentDefPendingResolution as ɵisComponentDefPendingResolution, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, isViewDirty as ɵisViewDirty, markForRefresh as ɵmarkForRefresh, microtaskEffect as ɵmicrotaskEffect, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, performanceMarkFeature as ɵperformanceMarkFeature, publishExternalGlobalUtil as ɵpublishExternalGlobalUtil, readHydrationInfo as ɵreadHydrationInfo, registerLocaleData as ɵregisterLocaleData, renderDeferBlockState as ɵrenderDeferBlockState, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, restoreComponentResolutionQueue as ɵrestoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, ɵsetClassDebugInfo, setClassMetadata as ɵsetClassMetadata, setClassMetadataAsync as ɵsetClassMetadataAsync, setDocument as ɵsetDocument, setInjectorProfilerContext as ɵsetInjectorProfilerContext, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, startMeasuring as ɵstartMeasuring, stopMeasuring as ɵstopMeasuring, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, triggerResourceLoading as ɵtriggerResourceLoading, truncateMiddle as ɵtruncateMiddle, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵunwrapWritableSignal, withDomHydration as ɵwithDomHydration, withEventReplay as ɵwithEventReplay, withI18nSupport as ɵwithI18nSupport, withIncrementalHydration as ɵwithIncrementalHydration, ɵɵCopyDefinitionFeature, ɵɵExternalStylesFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵattachSourceLocations, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵdeclareLet, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵdeferHydrateNever, ɵɵdeferHydrateOnHover, ɵɵdeferHydrateOnIdle, ɵɵdeferHydrateOnImmediate, ɵɵdeferHydrateOnInteraction, ɵɵdeferHydrateOnTimer, ɵɵdeferHydrateOnViewport, ɵɵdeferHydrateWhen, ɵɵdeferOnHover, ɵɵdeferOnIdle, ɵɵdeferOnImmediate, ɵɵdeferOnInteraction, ɵɵdeferOnTimer, ɵɵdeferOnViewport, ɵɵdeferPrefetchOnHover, ɵɵdeferPrefetchOnIdle, ɵɵdeferPrefetchOnImmediate, ɵɵdeferPrefetchOnInteraction, ɵɵdeferPrefetchOnTimer, ɵɵdeferPrefetchOnViewport, ɵɵdeferPrefetchWhen, ɵɵdeferWhen, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetComponentDepsFactory, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareClassMetadataAsync, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryAdvance, ɵɵqueryRefresh, ɵɵreadContextLet, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵreplaceMetadata, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstoreLet, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateIframeAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
41839
40527
  //# sourceMappingURL=core.mjs.map