@angular/core 16.0.0-rc.0 → 16.0.0-rc.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 (42) hide show
  1. package/esm2022/rxjs-interop/src/index.mjs +1 -1
  2. package/esm2022/rxjs-interop/src/to_observable.mjs +1 -1
  3. package/esm2022/rxjs-interop/src/to_signal.mjs +2 -2
  4. package/esm2022/src/application_tokens.mjs +2 -2
  5. package/esm2022/src/core_private_export.mjs +2 -2
  6. package/esm2022/src/debug/debug_node.mjs +4 -9
  7. package/esm2022/src/di/interface/defs.mjs +3 -18
  8. package/esm2022/src/di/r3_injector.mjs +2 -1
  9. package/esm2022/src/errors.mjs +1 -1
  10. package/esm2022/src/hydration/annotate.mjs +5 -2
  11. package/esm2022/src/hydration/api.mjs +7 -7
  12. package/esm2022/src/hydration/node_lookup_utils.mjs +13 -8
  13. package/esm2022/src/hydration/tokens.mjs +5 -5
  14. package/esm2022/src/render3/assert.mjs +1 -1
  15. package/esm2022/src/render3/collect_native_nodes.mjs +18 -3
  16. package/esm2022/src/render3/i18n/i18n_parse.mjs +5 -6
  17. package/esm2022/src/render3/instructions/element_validation.mjs +4 -5
  18. package/esm2022/src/render3/instructions/shared.mjs +52 -25
  19. package/esm2022/src/render3/instructions/styling.mjs +22 -2
  20. package/esm2022/src/render3/instructions/template.mjs +2 -2
  21. package/esm2022/src/render3/reactive_lview_consumer.mjs +5 -5
  22. package/esm2022/src/render3/reactivity/effect.mjs +8 -3
  23. package/esm2022/src/render3/util/view_utils.mjs +5 -1
  24. package/esm2022/src/signals/src/signal.mjs +8 -1
  25. package/esm2022/src/version.mjs +1 -1
  26. package/esm2022/testing/src/logger.mjs +3 -3
  27. package/esm2022/testing/src/styling.mjs +1 -2
  28. package/esm2022/testing/src/test_bed_compiler.mjs +3 -8
  29. package/esm2022/testing/src/testing_internal.mjs +1 -2
  30. package/fesm2022/core.mjs +148 -85
  31. package/fesm2022/core.mjs.map +1 -1
  32. package/fesm2022/rxjs-interop.mjs +62 -2
  33. package/fesm2022/rxjs-interop.mjs.map +1 -1
  34. package/fesm2022/testing.mjs +137 -77
  35. package/fesm2022/testing.mjs.map +1 -1
  36. package/index.d.ts +12 -4
  37. package/package.json +1 -1
  38. package/rxjs-interop/index.d.ts +3 -3
  39. package/schematics/ng-generate/standalone-migration/bundle.js +618 -161
  40. package/schematics/ng-generate/standalone-migration/bundle.js.map +4 -4
  41. package/testing/index.d.ts +1 -1
  42. package/esm2022/testing/src/ng_zone_mock.mjs +0 -34
package/fesm2022/core.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v16.0.0-rc.0
2
+ * @license Angular v16.0.0-rc.2
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -403,30 +403,15 @@ function getOwnDefinition(type, field) {
403
403
  function getInheritedInjectableDef(type) {
404
404
  const def = type && (type[NG_PROV_DEF] || type[NG_INJECTABLE_DEF]);
405
405
  if (def) {
406
- const typeName = getTypeName(type);
407
406
  ngDevMode &&
408
- console.warn(`DEPRECATED: DI is instantiating a token "${typeName}" that inherits its @Injectable decorator but does not provide one itself.\n` +
409
- `This will become an error in a future version of Angular. Please add @Injectable() to the "${typeName}" class.`);
407
+ console.warn(`DEPRECATED: DI is instantiating a token "${type.name}" that inherits its @Injectable decorator but does not provide one itself.\n` +
408
+ `This will become an error in a future version of Angular. Please add @Injectable() to the "${type.name}" class.`);
410
409
  return def;
411
410
  }
412
411
  else {
413
412
  return null;
414
413
  }
415
414
  }
416
- /** Gets the name of a type, accounting for some cross-browser differences. */
417
- function getTypeName(type) {
418
- // `Function.prototype.name` behaves differently between IE and other browsers. In most browsers
419
- // it'll always return the name of the function itself, no matter how many other functions it
420
- // inherits from. On IE the function doesn't have its own `name` property, but it takes it from
421
- // the lowest level in the prototype chain. E.g. if we have `class Foo extends Parent` most
422
- // browsers will evaluate `Foo.name` to `Foo` while IE will return `Parent`. We work around
423
- // the issue by converting the function to a string and parsing its name out that way via a regex.
424
- if (type.hasOwnProperty('name')) {
425
- return type.name;
426
- }
427
- const match = ('' + type).match(/^function\s*([^\s(]+)/);
428
- return match === null ? '' : match[1];
429
- }
430
415
  /**
431
416
  * Read the injector def type in a way which is immune to accidentally reading inherited value.
432
417
  *
@@ -2630,6 +2615,12 @@ class WritableSignalImpl extends ReactiveNode {
2630
2615
  this.producerMayHaveChanged();
2631
2616
  postSignalSetFn?.();
2632
2617
  }
2618
+ asReadonly() {
2619
+ if (this.readonlySignal === undefined) {
2620
+ this.readonlySignal = createSignalFromFunction(this, () => this.signal());
2621
+ }
2622
+ return this.readonlySignal;
2623
+ }
2633
2624
  signal() {
2634
2625
  this.producerAccessed();
2635
2626
  return this.value;
@@ -2648,6 +2639,7 @@ function signal(initialValue, options) {
2648
2639
  set: signalNode.set.bind(signalNode),
2649
2640
  update: signalNode.update.bind(signalNode),
2650
2641
  mutate: signalNode.mutate.bind(signalNode),
2642
+ asReadonly: signalNode.asReadonly.bind(signalNode)
2651
2643
  });
2652
2644
  return signalFn;
2653
2645
  }
@@ -3026,6 +3018,9 @@ function updateTransplantedViewCount(lContainer, amount) {
3026
3018
  * Stores a LView-specific destroy callback.
3027
3019
  */
3028
3020
  function storeLViewOnDestroy(lView, onDestroyCallback) {
3021
+ if ((lView[FLAGS] & 256 /* LViewFlags.Destroyed */) === 256 /* LViewFlags.Destroyed */) {
3022
+ throw new RuntimeError(911 /* RuntimeErrorCode.VIEW_ALREADY_DESTROYED */, ngDevMode && 'View has already been destroyed.');
3023
+ }
3029
3024
  if (lView[ON_DESTROY_HOOKS] === null) {
3030
3025
  lView[ON_DESTROY_HOOKS] = [];
3031
3026
  }
@@ -5918,8 +5913,8 @@ function validateElementIsKnown(element, lView, tagName, schemas, hasDirectives)
5918
5913
  // as a custom element. Note that unknown elements with a dash in their name won't be instances
5919
5914
  // of HTMLUnknownElement in browsers that support web components.
5920
5915
  const isUnknown =
5921
- // Note that we can't check for `typeof HTMLUnknownElement === 'function'`,
5922
- // because while most browsers return 'function', IE returns 'object'.
5916
+ // Note that we can't check for `typeof HTMLUnknownElement === 'function'` because
5917
+ // Domino doesn't expose HTMLUnknownElement globally.
5923
5918
  (typeof HTMLUnknownElement !== 'undefined' && HTMLUnknownElement &&
5924
5919
  element instanceof HTMLUnknownElement) ||
5925
5920
  (typeof customElements !== 'undefined' && tagName.indexOf('-') > -1 &&
@@ -5976,8 +5971,7 @@ function isPropertyValid(element, propName, tagName, schemas) {
5976
5971
  if (matchingSchemas(schemas, tagName) || propName in element || isAnimationProp(propName)) {
5977
5972
  return true;
5978
5973
  }
5979
- // Note: `typeof Node` returns 'function' in most browsers, but on IE it is 'object' so we
5980
- // need to account for both here, while being careful with `typeof null` also returning 'object'.
5974
+ // Note: `typeof Node` returns 'function' in most browsers, but is undefined with domino.
5981
5975
  return typeof Node === 'undefined' || Node === null || !(element instanceof Node);
5982
5976
  }
5983
5977
  /**
@@ -9007,6 +9001,7 @@ class R3Injector extends EnvironmentInjector {
9007
9001
  }
9008
9002
  }
9009
9003
  onDestroy(callback) {
9004
+ this.assertNotDestroyed();
9010
9005
  this._onDestroyHooks.push(callback);
9011
9006
  return () => this.removeOnDestroy(callback);
9012
9007
  }
@@ -9402,7 +9397,7 @@ const CSP_NONCE = new InjectionToken('CSP nonce', {
9402
9397
  // 4. Have the `ComponentFactory` read the attribute and provide it to the injector under the
9403
9398
  // hood - has the same problem as #1 and #2 in that the renderer is used to query for the root
9404
9399
  // node and the nonce value needs to be available when the renderer is created.
9405
- return getDocument().body.querySelector('[ngCspNonce]')?.getAttribute('ngCspNonce') || null;
9400
+ return getDocument().body?.querySelector('[ngCspNonce]')?.getAttribute('ngCspNonce') || null;
9406
9401
  },
9407
9402
  });
9408
9403
  /**
@@ -9968,7 +9963,7 @@ class Version {
9968
9963
  /**
9969
9964
  * @publicApi
9970
9965
  */
9971
- const VERSION = new Version('16.0.0-rc.0');
9966
+ const VERSION = new Version('16.0.0-rc.2');
9972
9967
 
9973
9968
  // This default value is when checking the hierarchy for a token.
9974
9969
  //
@@ -10116,11 +10111,11 @@ function isInSkipHydrationBlock(tNode) {
10116
10111
  return false;
10117
10112
  }
10118
10113
 
10119
- const NG_DEV_MODE$1 = typeof ngDevMode === 'undefined' || !!ngDevMode;
10120
10114
  /**
10121
- * Internal token that specifies whether hydration is enabled.
10115
+ * Internal token that specifies whether DOM reuse logic
10116
+ * during hydration is enabled.
10122
10117
  */
10123
- const IS_HYDRATION_FEATURE_ENABLED = new InjectionToken(NG_DEV_MODE$1 ? 'IS_HYDRATION_FEATURE_ENABLED' : '');
10118
+ const IS_HYDRATION_DOM_REUSE_ENABLED = new InjectionToken((typeof ngDevMode === 'undefined' || !!ngDevMode) ? 'IS_HYDRATION_DOM_REUSE_ENABLED' : '');
10124
10119
  // By default (in client rendering mode), we remove all the contents
10125
10120
  // of the host element and render an application after that.
10126
10121
  const PRESERVE_HOST_CONTENT_DEFAULT = false;
@@ -10128,7 +10123,7 @@ const PRESERVE_HOST_CONTENT_DEFAULT = false;
10128
10123
  * Internal token that indicates whether host element content should be
10129
10124
  * retained during the bootstrap.
10130
10125
  */
10131
- const PRESERVE_HOST_CONTENT = new InjectionToken(NG_DEV_MODE$1 ? 'PRESERVE_HOST_CONTENT' : '', {
10126
+ const PRESERVE_HOST_CONTENT = new InjectionToken((typeof ngDevMode === 'undefined' || !!ngDevMode) ? 'PRESERVE_HOST_CONTENT' : '', {
10132
10127
  providedIn: 'root',
10133
10128
  factory: () => PRESERVE_HOST_CONTENT_DEFAULT,
10134
10129
  });
@@ -10286,7 +10281,6 @@ function getExpressionChangedErrorDetails(lView, bindingIndex, oldValue, newValu
10286
10281
  return { propName: undefined, oldValue, newValue };
10287
10282
  }
10288
10283
 
10289
- const NG_DEV_MODE = typeof ngDevMode === 'undefined' || ngDevMode;
10290
10284
  class ReactiveLViewConsumer extends ReactiveNode {
10291
10285
  constructor() {
10292
10286
  super(...arguments);
@@ -10294,11 +10288,12 @@ class ReactiveLViewConsumer extends ReactiveNode {
10294
10288
  this._lView = null;
10295
10289
  }
10296
10290
  set lView(lView) {
10297
- NG_DEV_MODE && assertEqual(this._lView, null, 'Consumer already associated with a view.');
10291
+ (typeof ngDevMode === 'undefined' || ngDevMode) &&
10292
+ assertEqual(this._lView, null, 'Consumer already associated with a view.');
10298
10293
  this._lView = lView;
10299
10294
  }
10300
10295
  onConsumerDependencyMayHaveChanged() {
10301
- NG_DEV_MODE &&
10296
+ (typeof ngDevMode === 'undefined' || ngDevMode) &&
10302
10297
  assertDefined(this._lView, 'Updating a signal during template or host binding execution is not allowed.');
10303
10298
  markViewDirty(this._lView);
10304
10299
  }
@@ -10716,8 +10711,9 @@ function processHostBindingOpCodes(tView, lView) {
10716
10711
  }
10717
10712
  }
10718
10713
  finally {
10719
- lView[REACTIVE_HOST_BINDING_CONSUMER] === null &&
10714
+ if (lView[REACTIVE_HOST_BINDING_CONSUMER] === null) {
10720
10715
  commitLViewConsumerIfHasProducers(lView, REACTIVE_HOST_BINDING_CONSUMER);
10716
+ }
10721
10717
  setSelectedIndex(-1);
10722
10718
  }
10723
10719
  }
@@ -10772,7 +10768,6 @@ function createLView(parentLView, tView, context, flags, host, tHostNode, enviro
10772
10768
  lView[ID] = getUniqueLViewId();
10773
10769
  lView[HYDRATION] = hydrationInfo;
10774
10770
  lView[EMBEDDED_VIEW_INJECTOR] = embeddedViewInjector;
10775
- lView[REACTIVE_TEMPLATE_CONSUMER] = null;
10776
10771
  ngDevMode &&
10777
10772
  assertEqual(tView.type == 2 /* TViewType.Embedded */ ? parentLView !== null : true, true, 'Embedded views must have parentLView');
10778
10773
  lView[DECLARATION_COMPONENT_VIEW] =
@@ -11070,10 +11065,21 @@ function executeTemplate(tView, lView, templateFn, rf, context) {
11070
11065
  }
11071
11066
  const preHookType = isUpdatePhase ? 2 /* ProfilerEvent.TemplateUpdateStart */ : 0 /* ProfilerEvent.TemplateCreateStart */;
11072
11067
  profiler(preHookType, context);
11073
- consumer.runInContext(templateFn, rf, context);
11068
+ if (isUpdatePhase) {
11069
+ consumer.runInContext(templateFn, rf, context);
11070
+ }
11071
+ else {
11072
+ const prevConsumer = setActiveConsumer(null);
11073
+ try {
11074
+ templateFn(rf, context);
11075
+ }
11076
+ finally {
11077
+ setActiveConsumer(prevConsumer);
11078
+ }
11079
+ }
11074
11080
  }
11075
11081
  finally {
11076
- if (lView[REACTIVE_TEMPLATE_CONSUMER] === null) {
11082
+ if (isUpdatePhase && lView[REACTIVE_TEMPLATE_CONSUMER] === null) {
11077
11083
  commitLViewConsumerIfHasProducers(lView, REACTIVE_TEMPLATE_CONSUMER);
11078
11084
  }
11079
11085
  setSelectedIndex(prevSelectedIndex);
@@ -11086,14 +11092,20 @@ function executeTemplate(tView, lView, templateFn, rf, context) {
11086
11092
  //////////////////////////
11087
11093
  function executeContentQueries(tView, tNode, lView) {
11088
11094
  if (isContentQueryHost(tNode)) {
11089
- const start = tNode.directiveStart;
11090
- const end = tNode.directiveEnd;
11091
- for (let directiveIndex = start; directiveIndex < end; directiveIndex++) {
11092
- const def = tView.data[directiveIndex];
11093
- if (def.contentQueries) {
11094
- def.contentQueries(1 /* RenderFlags.Create */, lView[directiveIndex], directiveIndex);
11095
+ const prevConsumer = setActiveConsumer(null);
11096
+ try {
11097
+ const start = tNode.directiveStart;
11098
+ const end = tNode.directiveEnd;
11099
+ for (let directiveIndex = start; directiveIndex < end; directiveIndex++) {
11100
+ const def = tView.data[directiveIndex];
11101
+ if (def.contentQueries) {
11102
+ def.contentQueries(1 /* RenderFlags.Create */, lView[directiveIndex], directiveIndex);
11103
+ }
11095
11104
  }
11096
11105
  }
11106
+ finally {
11107
+ setActiveConsumer(prevConsumer);
11108
+ }
11097
11109
  }
11098
11110
  }
11099
11111
  /**
@@ -11912,17 +11924,11 @@ function setElementAttribute(renderer, element, namespace, tagName, name, value,
11912
11924
  function setInputsFromAttrs(lView, directiveIndex, instance, def, tNode, initialInputData) {
11913
11925
  const initialInputs = initialInputData[directiveIndex];
11914
11926
  if (initialInputs !== null) {
11915
- const setInput = def.setInput;
11916
11927
  for (let i = 0; i < initialInputs.length;) {
11917
11928
  const publicName = initialInputs[i++];
11918
11929
  const privateName = initialInputs[i++];
11919
11930
  const value = initialInputs[i++];
11920
- if (setInput !== null) {
11921
- def.setInput(instance, value, publicName, privateName);
11922
- }
11923
- else {
11924
- instance[privateName] = value;
11925
- }
11931
+ writeToDirectiveInput(def, instance, publicName, privateName, value);
11926
11932
  if (ngDevMode) {
11927
11933
  const nativeElement = getNativeByTNode(tNode, lView);
11928
11934
  setNgReflectProperty(lView, nativeElement, tNode.type, privateName, value);
@@ -11930,6 +11936,20 @@ function setInputsFromAttrs(lView, directiveIndex, instance, def, tNode, initial
11930
11936
  }
11931
11937
  }
11932
11938
  }
11939
+ function writeToDirectiveInput(def, instance, publicName, privateName, value) {
11940
+ const prevConsumer = setActiveConsumer(null);
11941
+ try {
11942
+ if (def.setInput !== null) {
11943
+ def.setInput(instance, value, publicName, privateName);
11944
+ }
11945
+ else {
11946
+ instance[privateName] = value;
11947
+ }
11948
+ }
11949
+ finally {
11950
+ setActiveConsumer(prevConsumer);
11951
+ }
11952
+ }
11933
11953
  /**
11934
11954
  * Generates initialInputData for a node and stores it in the template's static storage
11935
11955
  * so subsequent template invocations don't have to recalculate it.
@@ -12224,7 +12244,13 @@ function checkNoChangesInternal(tView, lView, context, notifyErrorHandler = true
12224
12244
  function executeViewQueryFn(flags, viewQueryFn, component) {
12225
12245
  ngDevMode && assertDefined(viewQueryFn, 'View queries function to execute must be defined.');
12226
12246
  setCurrentQueryIndex(0);
12227
- viewQueryFn(flags, component);
12247
+ const prevConsumer = setActiveConsumer(null);
12248
+ try {
12249
+ viewQueryFn(flags, component);
12250
+ }
12251
+ finally {
12252
+ setActiveConsumer(prevConsumer);
12253
+ }
12228
12254
  }
12229
12255
  ///////////////////////////////
12230
12256
  //// Bindings & interpolations
@@ -12312,12 +12338,7 @@ function setInputsForProperty(tView, lView, inputs, publicName, value) {
12312
12338
  const instance = lView[index];
12313
12339
  ngDevMode && assertIndexInRange(lView, index);
12314
12340
  const def = tView.data[index];
12315
- if (def.setInput !== null) {
12316
- def.setInput(instance, value, publicName, privateName);
12317
- }
12318
- else {
12319
- instance[privateName] = value;
12320
- }
12341
+ writeToDirectiveInput(def, instance, publicName, privateName, value);
12321
12342
  }
12322
12343
  }
12323
12344
  /**
@@ -12375,7 +12396,7 @@ class EffectManager {
12375
12396
  this.queue = new Map();
12376
12397
  }
12377
12398
  create(effectFn, destroyRef, allowSignalWrites) {
12378
- const zone = Zone.current;
12399
+ const zone = (typeof Zone === 'undefined') ? null : Zone.current;
12379
12400
  const watch = new Watch(effectFn, (watch) => {
12380
12401
  if (!this.all.has(watch)) {
12381
12402
  return;
@@ -12403,7 +12424,12 @@ class EffectManager {
12403
12424
  }
12404
12425
  for (const [watch, zone] of this.queue) {
12405
12426
  this.queue.delete(watch);
12406
- zone.run(() => watch.run());
12427
+ if (zone) {
12428
+ zone.run(() => watch.run());
12429
+ }
12430
+ else {
12431
+ watch.run();
12432
+ }
12407
12433
  }
12408
12434
  }
12409
12435
  get isQueueEmpty() {
@@ -12485,6 +12511,21 @@ function collectNativeNodes(tView, lView, tNode, result, isProjection = false) {
12485
12511
  collectNativeNodes(lViewInAContainer[TVIEW], lViewInAContainer, lViewFirstChildTNode, result);
12486
12512
  }
12487
12513
  }
12514
+ // When an LContainer is created, the anchor (comment) node is:
12515
+ // - (1) either reused in case of an ElementContainer (<ng-container>)
12516
+ // - (2) or a new comment node is created
12517
+ // In the first case, the anchor comment node would be added to the final
12518
+ // list by the code above (`result.push(unwrapRNode(lNode))`), but the second
12519
+ // case requires extra handling: the anchor node needs to be added to the
12520
+ // final list manually. See additional information in the `createAnchorNode`
12521
+ // function in the `view_container_ref.ts`.
12522
+ //
12523
+ // In the first case, the same reference would be stored in the `NATIVE`
12524
+ // and `HOST` slots in an LContainer. Otherwise, this is the second case and
12525
+ // we should add an element to the final list.
12526
+ if (lNode[NATIVE] !== lNode[HOST]) {
12527
+ result.push(lNode[NATIVE]);
12528
+ }
12488
12529
  }
12489
12530
  const tNodeType = tNode.type;
12490
12531
  if (tNodeType & 8 /* TNodeType.ElementContainer */) {
@@ -14752,10 +14793,10 @@ function locateRNodeByPath(path, lView) {
14752
14793
  const [referenceNode, ...navigationInstructions] = decompressNodeLocation(path);
14753
14794
  let ref;
14754
14795
  if (referenceNode === REFERENCE_NODE_HOST) {
14755
- ref = lView[0];
14796
+ ref = lView[DECLARATION_COMPONENT_VIEW][HOST];
14756
14797
  }
14757
14798
  else if (referenceNode === REFERENCE_NODE_BODY) {
14758
- ref = ɵɵresolveBody(lView[0]);
14799
+ ref = ɵɵresolveBody(lView[DECLARATION_COMPONENT_VIEW][HOST]);
14759
14800
  }
14760
14801
  else {
14761
14802
  const parentElementId = Number(referenceNode);
@@ -14799,6 +14840,7 @@ function navigateBetween(start, finish) {
14799
14840
  }
14800
14841
  /**
14801
14842
  * Calculates a path between 2 sibling nodes (generates a number of `NextSibling` navigations).
14843
+ * Returns `null` if no such path exists between the given nodes.
14802
14844
  */
14803
14845
  function navigateBetweenSiblings(start, finish) {
14804
14846
  const nav = [];
@@ -14806,7 +14848,10 @@ function navigateBetweenSiblings(start, finish) {
14806
14848
  for (node = start; node != null && node !== finish; node = node.nextSibling) {
14807
14849
  nav.push(NodeNavigationStep.NextSibling);
14808
14850
  }
14809
- return node === null ? [] : nav;
14851
+ // If the `node` becomes `null` or `undefined` at the end, that means that we
14852
+ // didn't find the `end` node, thus return `null` (which would trigger serialization
14853
+ // error to be produced).
14854
+ return node == null ? null : nav;
14810
14855
  }
14811
14856
  /**
14812
14857
  * Calculates a path between 2 nodes in terms of `nextSibling` and `firstChild`
@@ -14829,10 +14874,11 @@ function calcPathForNode(tNode, lView) {
14829
14874
  let parentIndex;
14830
14875
  let parentRNode;
14831
14876
  let referenceNodeName;
14832
- if (parentTNode === null) {
14833
- // No parent TNode - use host element as a reference node.
14877
+ if (parentTNode === null || !(parentTNode.type & 3 /* TNodeType.AnyRNode */)) {
14878
+ // If there is no parent TNode or a parent TNode does not represent an RNode
14879
+ // (i.e. not a DOM node), use component host element as a reference node.
14834
14880
  parentIndex = referenceNodeName = REFERENCE_NODE_HOST;
14835
- parentRNode = lView[HOST];
14881
+ parentRNode = lView[DECLARATION_COMPONENT_VIEW][HOST];
14836
14882
  }
14837
14883
  else {
14838
14884
  // Use parent TNode as a reference node.
@@ -14884,7 +14930,7 @@ function templateFirstCreatePass(index, tView, lView, templateFn, decls, vars, t
14884
14930
  const hydrationInfo = lView[HYDRATION];
14885
14931
  if (hydrationInfo) {
14886
14932
  const noOffsetIndex = index - HEADER_OFFSET;
14887
- ssrId = (hydrationInfo && hydrationInfo.data[TEMPLATES]?.[noOffsetIndex]) ?? null;
14933
+ ssrId = hydrationInfo.data[TEMPLATES]?.[noOffsetIndex] ?? null;
14888
14934
  }
14889
14935
  // TODO(pk): refactor getOrCreateTNode to have the "create" only version
14890
14936
  const tNode = getOrCreateTNode(tView, index, 4 /* TNodeType.Container */, tagName || null, getConstant(tViewConsts, attrsIndex));
@@ -17001,7 +17047,7 @@ function styleStringParser(keyValueArray, text) {
17001
17047
  * @codeGenApi
17002
17048
  */
17003
17049
  function ɵɵclassMap(classes) {
17004
- checkStylingMap(keyValueArraySet, classStringParser, classes, true);
17050
+ checkStylingMap(classKeyValueArraySet, classStringParser, classes, true);
17005
17051
  }
17006
17052
  /**
17007
17053
  * Parse text as class and add values to KeyValueArray.
@@ -17443,6 +17489,26 @@ function toStylingKeyValueArray(keyValueArraySet, stringParser, value) {
17443
17489
  function styleKeyValueArraySet(keyValueArray, key, value) {
17444
17490
  keyValueArraySet(keyValueArray, key, unwrapSafeValue(value));
17445
17491
  }
17492
+ /**
17493
+ * Class-binding-specific function for setting the `value` for a `key`.
17494
+ *
17495
+ * See: `keyValueArraySet` for details
17496
+ *
17497
+ * @param keyValueArray KeyValueArray to add to.
17498
+ * @param key Style key to add.
17499
+ * @param value The value to set.
17500
+ */
17501
+ function classKeyValueArraySet(keyValueArray, key, value) {
17502
+ // We use `classList.add` to eventually add the CSS classes to the DOM node. Any value passed into
17503
+ // `add` is stringified and added to the `class` attribute, e.g. even null, undefined or numbers
17504
+ // will be added. Stringify the key here so that our internal data structure matches the value in
17505
+ // the DOM. The only exceptions are empty strings and strings that contain spaces for which
17506
+ // the browser throws an error. We ignore such values, because the error is somewhat cryptic.
17507
+ const stringKey = String(key);
17508
+ if (stringKey !== '' && !stringKey.includes(' ')) {
17509
+ keyValueArraySet(keyValueArray, stringKey, value);
17510
+ }
17511
+ }
17446
17512
  /**
17447
17513
  * Update map based styling.
17448
17514
  *
@@ -20172,11 +20238,10 @@ const MARKER = `�`;
20172
20238
  const SUBTEMPLATE_REGEXP = /�\/?\*(\d+:\d+)�/gi;
20173
20239
  const PH_REGEXP = /�(\/?[#*]\d+):?\d*�/gi;
20174
20240
  /**
20175
- * Angular Dart introduced &ngsp; as a placeholder for non-removable space, see:
20176
- * https://github.com/dart-lang/angular/blob/0bb611387d29d65b5af7f9d2515ab571fd3fbee4/_tests/test/compiler/preserve_whitespace_test.dart#L25-L32
20177
- * In Angular Dart &ngsp; is converted to the 0xE500 PUA (Private Use Areas) unicode character
20178
- * and later on replaced by a space. We are re-implementing the same idea here, since translations
20179
- * might contain this special character.
20241
+ * Angular uses the special entity &ngsp; as a placeholder for non-removable space.
20242
+ * It's replaced by the 0xE500 PUA (Private Use Areas) unicode character and later on replaced by a
20243
+ * space.
20244
+ * We are re-implementing the same idea since translations might contain this special character.
20180
20245
  */
20181
20246
  const NGSP_UNICODE_REGEXP = /\uE500/g;
20182
20247
  function replaceNgsp(value) {
@@ -27730,16 +27795,11 @@ class DebugElement extends DebugNode {
27730
27795
  i += 2;
27731
27796
  }
27732
27797
  }
27733
- const eAttrs = element.attributes;
27734
- for (let i = 0; i < eAttrs.length; i++) {
27735
- const attr = eAttrs[i];
27736
- const lowercaseName = attr.name.toLowerCase();
27798
+ for (const attr of element.attributes) {
27737
27799
  // Make sure that we don't assign the same attribute both in its
27738
27800
  // case-sensitive form and the lower-cased one from the browser.
27739
- if (lowercaseTNodeAttrs.indexOf(lowercaseName) === -1) {
27740
- // Save the lowercase name to align the behavior between browsers.
27741
- // IE preserves the case, while all other browser convert it to lower case.
27742
- attributes[lowercaseName] = attr.value;
27801
+ if (!lowercaseTNodeAttrs.includes(attr.name)) {
27802
+ attributes[attr.name] = attr.value;
27743
27803
  }
27744
27804
  }
27745
27805
  return attributes;
@@ -29518,7 +29578,10 @@ function serializeLView(lView, context) {
29518
29578
  // live DOM has exactly the same state as it was before serialization.
29519
29579
  if (tNode.type & 1 /* TNodeType.Text */) {
29520
29580
  const rNode = unwrapRNode(lView[i]);
29521
- if (rNode.textContent?.replace(/\s/gm, '') === '') {
29581
+ // Collect this node as required special annotation only when its
29582
+ // contents is empty. Otherwise, such text node would be present on
29583
+ // the client after server-side rendering and no special handling needed.
29584
+ if (rNode.textContent === '') {
29522
29585
  context.corruptedTextNodes.set(rNode, "ngetn" /* TextNodeMarker.EmptyNode */);
29523
29586
  }
29524
29587
  else if (rNode.nextSibling?.nodeType === Node.TEXT_NODE) {
@@ -29751,7 +29814,7 @@ function whenStable(appRef, pendingTasks) {
29751
29814
  function withDomHydration() {
29752
29815
  return makeEnvironmentProviders([
29753
29816
  {
29754
- provide: IS_HYDRATION_FEATURE_ENABLED,
29817
+ provide: IS_HYDRATION_DOM_REUSE_ENABLED,
29755
29818
  useFactory: () => {
29756
29819
  let isEnabled = true;
29757
29820
  if (isBrowser()) {
@@ -29759,7 +29822,7 @@ function withDomHydration() {
29759
29822
  // hydration annotations. Otherwise, keep hydration disabled.
29760
29823
  const transferState = inject(TransferState, { optional: true });
29761
29824
  isEnabled = !!transferState?.get(NGH_DATA_KEY, null);
29762
- if (!isEnabled) {
29825
+ if (!isEnabled && (typeof ngDevMode !== 'undefined' && ngDevMode)) {
29763
29826
  const console = inject(Console);
29764
29827
  const message = formatRuntimeError(-505 /* RuntimeErrorCode.MISSING_HYDRATION_ANNOTATIONS */, 'Angular hydration was requested on the client, but there was no ' +
29765
29828
  'serialized information present in the server response, ' +
@@ -29784,7 +29847,7 @@ function withDomHydration() {
29784
29847
  // on the client. Moving forward, the `isBrowser` check should
29785
29848
  // be replaced with a tree-shakable alternative (e.g. `isServer`
29786
29849
  // flag).
29787
- if (isBrowser() && inject(IS_HYDRATION_FEATURE_ENABLED)) {
29850
+ if (isBrowser() && inject(IS_HYDRATION_DOM_REUSE_ENABLED)) {
29788
29851
  enableHydrationRuntimeSupport();
29789
29852
  }
29790
29853
  },
@@ -29797,13 +29860,13 @@ function withDomHydration() {
29797
29860
  // environment and when hydration is configured properly.
29798
29861
  // On a server, an application is rendered from scratch,
29799
29862
  // so the host content needs to be empty.
29800
- return isBrowser() && inject(IS_HYDRATION_FEATURE_ENABLED);
29863
+ return isBrowser() && inject(IS_HYDRATION_DOM_REUSE_ENABLED);
29801
29864
  }
29802
29865
  },
29803
29866
  {
29804
29867
  provide: APP_BOOTSTRAP_LISTENER,
29805
29868
  useFactory: () => {
29806
- if (isBrowser() && inject(IS_HYDRATION_FEATURE_ENABLED)) {
29869
+ if (isBrowser() && inject(IS_HYDRATION_DOM_REUSE_ENABLED)) {
29807
29870
  const appRef = inject(ApplicationRef);
29808
29871
  const pendingTasks = inject(InitialRenderPendingTasks);
29809
29872
  const injector = inject(Injector);
@@ -30111,5 +30174,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
30111
30174
  * Generated bundle index. Do not edit.
30112
30175
  */
30113
30176
 
30114
- export { ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory$1 as ComponentFactory, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, DestroyRef, Directive, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, Host, HostBinding, HostListener, INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, Pipe, PlatformRef, Query, QueryList, Renderer2, RendererFactory2, RendererStyleFlags2, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation$1 as ViewEncapsulation, ViewRef, asNativeElements, assertInInjectionContext, assertPlatform, computed, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, isDevMode, isSignal, isStandalone, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, platformCore, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, runInInjectionContext, setTestabilityGetter, signal, untracked, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, ENABLED_SSR_FEATURES as ɵENABLED_SSR_FEATURES, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, IS_HYDRATION_FEATURE_ENABLED as ɵIS_HYDRATION_FEATURE_ENABLED, InitialRenderPendingTasks as ɵInitialRenderPendingTasks, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, annotateForHydration as ɵannotateForHydration, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, coerceToBoolean as ɵcoerceToBoolean, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, detectChanges as ɵdetectChanges, devModeEqual as ɵdevModeEqual, escapeTransferStateContent as ɵescapeTransferStateContent, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, getDebugNode as ɵgetDebugNode, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, isBoundToModule as ɵisBoundToModule, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, publishDefaultGlobalUtils$1 as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, registerLocaleData as ɵregisterLocaleData, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, setClassMetadata as ɵsetClassMetadata, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, unescapeTransferStateContent as ɵunescapeTransferStateContent, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, withDomHydration as ɵwithDomHydration, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵStandaloneFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcontentQuery, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryRefresh, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵvalidateIframeAttribute, ɵɵviewQuery };
30177
+ export { ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory$1 as ComponentFactory, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, DestroyRef, Directive, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, Host, HostBinding, HostListener, INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, Pipe, PlatformRef, Query, QueryList, Renderer2, RendererFactory2, RendererStyleFlags2, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation$1 as ViewEncapsulation, ViewRef, asNativeElements, assertInInjectionContext, assertPlatform, computed, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, isDevMode, isSignal, isStandalone, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, platformCore, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, runInInjectionContext, setTestabilityGetter, signal, untracked, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, ENABLED_SSR_FEATURES as ɵENABLED_SSR_FEATURES, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, InitialRenderPendingTasks as ɵInitialRenderPendingTasks, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, annotateForHydration as ɵannotateForHydration, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, coerceToBoolean as ɵcoerceToBoolean, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, detectChanges as ɵdetectChanges, devModeEqual as ɵdevModeEqual, escapeTransferStateContent as ɵescapeTransferStateContent, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, getDebugNode as ɵgetDebugNode, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, isBoundToModule as ɵisBoundToModule, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, publishDefaultGlobalUtils$1 as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, registerLocaleData as ɵregisterLocaleData, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, setClassMetadata as ɵsetClassMetadata, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, unescapeTransferStateContent as ɵunescapeTransferStateContent, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, withDomHydration as ɵwithDomHydration, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵStandaloneFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcontentQuery, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryRefresh, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵvalidateIframeAttribute, ɵɵviewQuery };
30115
30178
  //# sourceMappingURL=core.mjs.map