@angular/core 19.0.0-rc.0 → 19.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/fesm2022/core.mjs +201 -349
  2. package/fesm2022/core.mjs.map +1 -1
  3. package/fesm2022/primitives/event-dispatch.mjs +1 -1
  4. package/fesm2022/primitives/event-dispatch.mjs.map +1 -1
  5. package/fesm2022/primitives/signals.mjs +1 -1
  6. package/fesm2022/primitives/signals.mjs.map +1 -1
  7. package/fesm2022/rxjs-interop.mjs +1 -1
  8. package/fesm2022/rxjs-interop.mjs.map +1 -1
  9. package/fesm2022/testing.mjs +6 -6
  10. package/fesm2022/testing.mjs.map +1 -1
  11. package/index.d.ts +16 -51
  12. package/package.json +1 -1
  13. package/primitives/event-dispatch/index.d.ts +1 -1
  14. package/primitives/signals/index.d.ts +1 -1
  15. package/rxjs-interop/index.d.ts +1 -1
  16. package/schematics/bundles/{checker-2451e7c5.js → checker-9ca42e51.js} +163 -150
  17. package/schematics/bundles/combine_units-a16385aa.js +1634 -0
  18. package/schematics/bundles/{compiler_host-f54f8309.js → compiler_host-31afa4ed.js} +8 -5
  19. package/schematics/bundles/control-flow-migration.js +3 -3
  20. package/schematics/bundles/explicit-standalone-flag.js +5 -5
  21. package/schematics/bundles/{imports-44987700.js → imports-4ac08251.js} +1 -1
  22. package/schematics/bundles/inject-migration.js +131 -37
  23. package/schematics/bundles/{leading_space-6e7a8ec6.js → leading_space-d190b83b.js} +1 -1
  24. package/schematics/bundles/{migrate_ts_type_references-ab18a7c3.js → migrate_ts_type_references-b2a28742.js} +5 -5
  25. package/schematics/bundles/{ng_decorators-3ad437d2.js → nodes-0e7d45ca.js} +15 -2
  26. package/schematics/bundles/output-migration.js +20 -6895
  27. package/schematics/bundles/pending-tasks.js +5 -5
  28. package/schematics/bundles/{program-58424797.js → program-71beec0b.js} +109 -42
  29. package/schematics/bundles/{project_tsconfig_paths-6c9cde78.js → project_tsconfig_paths-e9ccccbf.js} +1 -1
  30. package/schematics/bundles/provide-initializer.js +17 -28
  31. package/schematics/bundles/route-lazy-loading.js +10 -5
  32. package/schematics/bundles/signal-input-migration.js +7 -7
  33. package/schematics/bundles/signal-queries-migration.js +12 -12
  34. package/schematics/bundles/signals.js +7 -7
  35. package/schematics/bundles/standalone-migration.js +13 -14
  36. package/schematics/migrations.json +1 -1
  37. package/testing/index.d.ts +1 -1
  38. package/schematics/bundles/combine_units-c52492ab.js +0 -31202
  39. package/schematics/bundles/nodes-ffdce442.js +0 -27
package/fesm2022/core.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v19.0.0-rc.0
2
+ * @license Angular v19.0.0-rc.1
3
3
  * (c) 2010-2024 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -8523,7 +8523,7 @@ const IS_INCREMENTAL_HYDRATION_ENABLED = new InjectionToken(typeof ngDevMode ===
8523
8523
  /**
8524
8524
  * A map of DOM elements with `jsaction` attributes grouped by action names.
8525
8525
  */
8526
- const BLOCK_ELEMENT_MAP = new InjectionToken(ngDevMode ? 'BLOCK_ELEMENT_MAP' : '', {
8526
+ const JSACTION_BLOCK_ELEMENT_MAP = new InjectionToken(ngDevMode ? 'JSACTION_BLOCK_ELEMENT_MAP' : '', {
8527
8527
  providedIn: 'root',
8528
8528
  factory: () => new Map(),
8529
8529
  });
@@ -8611,9 +8611,6 @@ function retrieveHydrationInfoImpl(rNode, injector, isRootView = false) {
8611
8611
  data,
8612
8612
  firstChild: rNode.firstChild ?? null,
8613
8613
  };
8614
- if (nghDeferData) {
8615
- dehydratedView.dehydratedDeferBlockData = nghDeferData;
8616
- }
8617
8614
  if (isRootView) {
8618
8615
  // If there is hydration info present for the root view, it means that there was
8619
8616
  // a ViewContainerRef injected in the root component. The root component host element
@@ -16946,7 +16943,7 @@ function createRootComponent(componentView, rootComponentDef, rootDirectives, ho
16946
16943
  function setRootNodeAttributes(hostRenderer, componentDef, hostRNode, rootSelectorOrNode) {
16947
16944
  if (rootSelectorOrNode) {
16948
16945
  // The placeholder will be replaced with the actual version at build time.
16949
- setUpAttributes(hostRenderer, hostRNode, ['ng-version', '19.0.0-rc.0']);
16946
+ setUpAttributes(hostRenderer, hostRNode, ['ng-version', '19.0.0-rc.1']);
16950
16947
  }
16951
16948
  else {
16952
16949
  // If host element is created as a part of this function call (i.e. `rootSelectorOrNode`
@@ -18516,12 +18513,6 @@ function ɵɵvalidateIframeAttribute(attrValue, tagName, attrName) {
18516
18513
  return attrValue;
18517
18514
  }
18518
18515
 
18519
- /**
18520
- * A constant defining the default value for the standalone attribute in Directive and Pipes decorators.
18521
- * Extracted to a separate file to facilitate G3 patches.
18522
- */
18523
- const NG_STANDALONE_DEFAULT_VALUE = true;
18524
-
18525
18516
  /**
18526
18517
  * Represents an instance of an `NgModule` created by an `NgModuleFactory`.
18527
18518
  * Provides access to the `NgModule` instance and related objects.
@@ -18883,7 +18874,7 @@ function ɵɵdefinePipe(pipeDef) {
18883
18874
  name: pipeDef.name,
18884
18875
  factory: null,
18885
18876
  pure: pipeDef.pure !== false,
18886
- standalone: pipeDef.standalone ?? NG_STANDALONE_DEFAULT_VALUE,
18877
+ standalone: pipeDef.standalone ?? true,
18887
18878
  onDestroy: pipeDef.type.prototype.ngOnDestroy || null,
18888
18879
  };
18889
18880
  }
@@ -18901,7 +18892,7 @@ function getNgDirectiveDef(directiveDefinition) {
18901
18892
  inputTransforms: null,
18902
18893
  inputConfig: directiveDefinition.inputs || EMPTY_OBJ,
18903
18894
  exportAs: directiveDefinition.exportAs || null,
18904
- standalone: directiveDefinition.standalone ?? NG_STANDALONE_DEFAULT_VALUE,
18895
+ standalone: directiveDefinition.standalone ?? true,
18905
18896
  signals: directiveDefinition.signals === true,
18906
18897
  selectors: directiveDefinition.selectors || EMPTY_ARRAY,
18907
18898
  viewQuery: directiveDefinition.viewQuery || null,
@@ -19259,21 +19250,18 @@ function ɵɵCopyDefinitionFeature(definition) {
19259
19250
  */
19260
19251
  function ɵɵHostDirectivesFeature(rawHostDirectives) {
19261
19252
  const feature = (definition) => {
19262
- const resolved = (Array.isArray(rawHostDirectives) ? rawHostDirectives : rawHostDirectives()).map((dir) => {
19263
- return typeof dir === 'function'
19264
- ? { directive: resolveForwardRef(dir), inputs: EMPTY_OBJ, outputs: EMPTY_OBJ }
19265
- : {
19266
- directive: resolveForwardRef(dir.directive),
19267
- inputs: bindingArrayToMap(dir.inputs),
19268
- outputs: bindingArrayToMap(dir.outputs),
19269
- };
19270
- });
19253
+ const isEager = Array.isArray(rawHostDirectives);
19271
19254
  if (definition.hostDirectives === null) {
19272
19255
  definition.findHostDirectiveDefs = findHostDirectiveDefs;
19273
- definition.hostDirectives = resolved;
19256
+ definition.hostDirectives = isEager
19257
+ ? rawHostDirectives.map(createHostDirectiveDef)
19258
+ : [rawHostDirectives];
19259
+ }
19260
+ else if (isEager) {
19261
+ definition.hostDirectives.unshift(...rawHostDirectives.map(createHostDirectiveDef));
19274
19262
  }
19275
19263
  else {
19276
- definition.hostDirectives.unshift(...resolved);
19264
+ definition.hostDirectives.unshift(rawHostDirectives);
19277
19265
  }
19278
19266
  };
19279
19267
  feature.ngInherit = true;
@@ -19281,21 +19269,43 @@ function ɵɵHostDirectivesFeature(rawHostDirectives) {
19281
19269
  }
19282
19270
  function findHostDirectiveDefs(currentDef, matchedDefs, hostDirectiveDefs) {
19283
19271
  if (currentDef.hostDirectives !== null) {
19284
- for (const hostDirectiveConfig of currentDef.hostDirectives) {
19285
- const hostDirectiveDef = getDirectiveDef(hostDirectiveConfig.directive);
19286
- if (typeof ngDevMode === 'undefined' || ngDevMode) {
19287
- validateHostDirective(hostDirectiveConfig, hostDirectiveDef);
19272
+ for (const configOrFn of currentDef.hostDirectives) {
19273
+ if (typeof configOrFn === 'function') {
19274
+ const resolved = configOrFn();
19275
+ for (const config of resolved) {
19276
+ trackHostDirectiveDef(createHostDirectiveDef(config), matchedDefs, hostDirectiveDefs);
19277
+ }
19278
+ }
19279
+ else {
19280
+ trackHostDirectiveDef(configOrFn, matchedDefs, hostDirectiveDefs);
19288
19281
  }
19289
- // We need to patch the `declaredInputs` so that
19290
- // `ngOnChanges` can map the properties correctly.
19291
- patchDeclaredInputs(hostDirectiveDef.declaredInputs, hostDirectiveConfig.inputs);
19292
- // Host directives execute before the host so that its host bindings can be overwritten.
19293
- findHostDirectiveDefs(hostDirectiveDef, matchedDefs, hostDirectiveDefs);
19294
- hostDirectiveDefs.set(hostDirectiveDef, hostDirectiveConfig);
19295
- matchedDefs.push(hostDirectiveDef);
19296
19282
  }
19297
19283
  }
19298
19284
  }
19285
+ /** Tracks a single host directive during directive matching. */
19286
+ function trackHostDirectiveDef(def, matchedDefs, hostDirectiveDefs) {
19287
+ const hostDirectiveDef = getDirectiveDef(def.directive);
19288
+ if (typeof ngDevMode === 'undefined' || ngDevMode) {
19289
+ validateHostDirective(def, hostDirectiveDef);
19290
+ }
19291
+ // We need to patch the `declaredInputs` so that
19292
+ // `ngOnChanges` can map the properties correctly.
19293
+ patchDeclaredInputs(hostDirectiveDef.declaredInputs, def.inputs);
19294
+ // Host directives execute before the host so that its host bindings can be overwritten.
19295
+ findHostDirectiveDefs(hostDirectiveDef, matchedDefs, hostDirectiveDefs);
19296
+ hostDirectiveDefs.set(hostDirectiveDef, def);
19297
+ matchedDefs.push(hostDirectiveDef);
19298
+ }
19299
+ /** Creates a `HostDirectiveDef` from a used-defined host directive configuration. */
19300
+ function createHostDirectiveDef(config) {
19301
+ return typeof config === 'function'
19302
+ ? { directive: resolveForwardRef(config), inputs: EMPTY_OBJ, outputs: EMPTY_OBJ }
19303
+ : {
19304
+ directive: resolveForwardRef(config.directive),
19305
+ inputs: bindingArrayToMap(config.inputs),
19306
+ outputs: bindingArrayToMap(config.outputs),
19307
+ };
19308
+ }
19299
19309
  /**
19300
19310
  * Converts an array in the form of `['publicName', 'alias', 'otherPublicName', 'otherAlias']` into
19301
19311
  * a map in the form of `{publicName: 'alias', otherPublicName: 'otherAlias'}`.
@@ -19836,7 +19846,7 @@ function invokeTriggerCleanupFns(type, lDetails) {
19836
19846
  }
19837
19847
  }
19838
19848
  /**
19839
- * Invokes registered cleanup functions for both prefetch and regular triggers.
19849
+ * Invokes registered cleanup functions for prefetch, hydrate, and regular triggers.
19840
19850
  */
19841
19851
  function invokeAllTriggerCleanupFns(lDetails, registry) {
19842
19852
  // TODO(incremental-hydration): cleanup functions are invoked in multiple places
@@ -20248,6 +20258,15 @@ function isDeferBlock(tView, tNode) {
20248
20258
  }
20249
20259
  return !!tDetails && isTDeferBlockDetails(tDetails);
20250
20260
  }
20261
+ /** Throws an error if the incremental hydration is not enabled */
20262
+ function assertIncrementalHydrationIsConfigured(injector) {
20263
+ if (!isIncrementalHydrationEnabled(injector)) {
20264
+ throw new RuntimeError(508 /* RuntimeErrorCode.MISCONFIGURED_INCREMENTAL_HYDRATION */, 'Angular has detected that some `@defer` blocks use `hydrate` triggers, ' +
20265
+ 'but incremental hydration was not enabled. Please ensure that the `withIncrementalHydration()` ' +
20266
+ 'call is added as an argument for the `provideClientHydration()` function call ' +
20267
+ 'in your application config.');
20268
+ }
20269
+ }
20251
20270
 
20252
20271
  /*!
20253
20272
  * @license
@@ -20782,7 +20801,11 @@ class TimerScheduler {
20782
20801
  });
20783
20802
  }
20784
20803
 
20785
- // TODO(incremental-hydration): refactor this so that it's not used in CSR cases
20804
+ /**
20805
+ * An internal injection token to reference `DeferBlockRegistry` implementation
20806
+ * in a tree-shakable way.
20807
+ */
20808
+ const DEFER_BLOCK_REGISTRY = new InjectionToken(ngDevMode ? 'DEFER_BLOCK_REGISTRY' : '');
20786
20809
  /**
20787
20810
  * The DeferBlockRegistry is used for incremental hydration purposes. It keeps
20788
20811
  * track of the Defer Blocks that need hydration so we can effectively
@@ -20798,14 +20821,22 @@ class DeferBlockRegistry {
20798
20821
  get(blockId) {
20799
20822
  return this.registry.get(blockId) ?? null;
20800
20823
  }
20801
- // TODO(incremental-hydration): we need to determine when this should be invoked
20802
- // to prevent leaking memory in SSR cases
20824
+ has(blockId) {
20825
+ return this.registry.has(blockId);
20826
+ }
20803
20827
  remove(blockId) {
20804
20828
  this.registry.delete(blockId);
20805
20829
  }
20806
20830
  get size() {
20807
20831
  return this.registry.size;
20808
20832
  }
20833
+ removeBlocks(blocks) {
20834
+ for (let blockId of blocks) {
20835
+ this.remove(blockId);
20836
+ }
20837
+ }
20838
+ // we have to leave the lowest block Id in the registry
20839
+ // unless that block has no children
20809
20840
  addCleanupFn(blockId, fn) {
20810
20841
  let cleanupFunctions = [];
20811
20842
  if (this.cleanupFns.has(blockId)) {
@@ -20822,6 +20853,8 @@ class DeferBlockRegistry {
20822
20853
  for (let fn of fns) {
20823
20854
  fn();
20824
20855
  }
20856
+ // We can safely clear these out now that they've fired.
20857
+ this.cleanupFns.delete(blockId);
20825
20858
  }
20826
20859
  // Blocks that are being hydrated.
20827
20860
  // TODO(incremental-hydration): cleanup task - we currently retain ids post hydration
@@ -20830,7 +20863,7 @@ class DeferBlockRegistry {
20830
20863
  /** @nocollapse */
20831
20864
  static ɵprov = /** @pureOrBreakMyCode */ /* @__PURE__ */ ɵɵdefineInjectable({
20832
20865
  token: DeferBlockRegistry,
20833
- providedIn: 'root',
20866
+ providedIn: null,
20834
20867
  factory: () => new DeferBlockRegistry(),
20835
20868
  });
20836
20869
  }
@@ -20886,10 +20919,11 @@ const sharedMapFunction = (rEl, jsActionMap) => {
20886
20919
  function removeListenersFromBlocks(blockNames, injector) {
20887
20920
  if (blockNames.length > 0) {
20888
20921
  let blockList = [];
20889
- const jsActionMap = injector.get(BLOCK_ELEMENT_MAP);
20922
+ const jsActionMap = injector.get(JSACTION_BLOCK_ELEMENT_MAP);
20890
20923
  for (let blockName of blockNames) {
20891
20924
  if (jsActionMap.has(blockName)) {
20892
20925
  blockList = [...blockList, ...jsActionMap.get(blockName)];
20926
+ jsActionMap.delete(blockName);
20893
20927
  }
20894
20928
  }
20895
20929
  const replayList = new Set(blockList);
@@ -20905,6 +20939,10 @@ const JSACTION_EVENT_CONTRACT = new InjectionToken(ngDevMode ? 'EVENT_CONTRACT_D
20905
20939
  providedIn: 'root',
20906
20940
  factory: () => ({}),
20907
20941
  });
20942
+ function cleanupContracts(injector) {
20943
+ const eventContractDetails = injector.get(JSACTION_EVENT_CONTRACT);
20944
+ eventContractDetails.instance.cleanUp();
20945
+ }
20908
20946
 
20909
20947
  /**
20910
20948
  * The name of a field that Angular monkey-patches onto a component
@@ -23086,29 +23124,27 @@ function detectChangesInViewIfRequired(lView, notifyErrorHandler, isFirstPass, z
23086
23124
  }
23087
23125
 
23088
23126
  /**
23089
- * Finds first hydrated parent `@defer` block for a given block id.
23090
- * If there are any dehydrated `@defer` blocks found along the way,
23091
- * they are also stored and returned from the function (as a list of ids).
23127
+ * Builds a queue of blocks that need to be hydrated, looking up the
23128
+ * tree to the topmost defer block that exists in the tree that hasn't
23129
+ * been hydrated, but exists in the registry. This queue is in top down
23130
+ * heirarchical order as a list of defer block ids.
23092
23131
  * Note: This is utilizing serialized information to navigate up the tree
23093
23132
  */
23094
- function findFirstHydratedParentDeferBlock(deferBlockId, injector) {
23095
- const deferBlockRegistry = injector.get(DeferBlockRegistry);
23133
+ function getParentBlockHydrationQueue(deferBlockId, injector) {
23134
+ const deferBlockRegistry = injector.get(DEFER_BLOCK_REGISTRY);
23096
23135
  const transferState = injector.get(TransferState);
23097
23136
  const deferBlockParents = transferState.get(NGH_DEFER_BLOCKS_KEY, {});
23098
- const dehydratedBlocks = [];
23099
- let deferBlock = deferBlockRegistry.get(deferBlockId);
23137
+ let isTopMostDeferBlock = false;
23100
23138
  let currentBlockId = deferBlockId;
23101
- // at each level we check if the registry has the given defer block id
23102
- // - if it does, we know it was already hydrated and can stop here
23103
- // - if it does not, we continue on
23104
- while (!deferBlock) {
23105
- dehydratedBlocks.unshift(currentBlockId);
23139
+ const deferBlockQueue = [];
23140
+ while (!isTopMostDeferBlock && currentBlockId) {
23141
+ ngDevMode &&
23142
+ assertEqual(deferBlockQueue.indexOf(currentBlockId), -1, 'Internal error: defer block hierarchy has a cycle.');
23143
+ deferBlockQueue.unshift(currentBlockId);
23144
+ isTopMostDeferBlock = deferBlockRegistry.has(currentBlockId);
23106
23145
  currentBlockId = deferBlockParents[currentBlockId][DEFER_PARENT_BLOCK_ID];
23107
- if (!currentBlockId)
23108
- break;
23109
- deferBlock = deferBlockRegistry.get(currentBlockId);
23110
23146
  }
23111
- return { blockId: currentBlockId, deferBlock, dehydratedBlocks };
23147
+ return deferBlockQueue;
23112
23148
  }
23113
23149
  /**
23114
23150
  * The core mechanism for incremental hydration. This recursively triggers
@@ -23118,37 +23154,38 @@ function findFirstHydratedParentDeferBlock(deferBlockId, injector) {
23118
23154
  * @param injector
23119
23155
  * @param blockName
23120
23156
  * @param onTriggerFn The function that triggers the block and fetches deps
23121
- * @param hydratedBlocks The set of blocks currently being hydrated in the tree
23122
23157
  * @returns
23123
23158
  */
23124
- async function hydrateFromBlockName(injector, blockName, onTriggerFn, hydratedBlocks = new Set()) {
23125
- const deferBlockRegistry = injector.get(DeferBlockRegistry);
23159
+ async function hydrateFromBlockName(injector, blockName, onTriggerFn) {
23160
+ const deferBlockRegistry = injector.get(DEFER_BLOCK_REGISTRY);
23126
23161
  // Make sure we don't hydrate/trigger the same thing multiple times
23127
23162
  if (deferBlockRegistry.hydrating.has(blockName))
23128
- return { deferBlock: null, hydratedBlocks };
23129
- const { blockId, deferBlock, dehydratedBlocks } = findFirstHydratedParentDeferBlock(blockName, injector);
23130
- if (deferBlock && blockId) {
23131
- // Step 2: Add the current block to the tracking sets to prevent
23132
- // attempting to trigger hydration on a block more than once
23133
- // simulataneously.
23134
- hydratedBlocks.add(blockId);
23135
- deferBlockRegistry.hydrating.add(blockId);
23136
- // Step 3: Run the actual trigger function to fetch dependencies
23163
+ return { deferBlock: null, hydratedBlocks: new Set() };
23164
+ // Step 1: Get the queue of items that needs to be hydrated
23165
+ const hydrationQueue = getParentBlockHydrationQueue(blockName, injector);
23166
+ // Step 2: Add all the items in the queue to the registry at once so we don't trigger hydration on them while
23167
+ // the sequence of triggers fires.
23168
+ hydrationQueue.forEach((id) => deferBlockRegistry.hydrating.add(id));
23169
+ // Step 3: hydrate each block in the queue. It will be in descending order from the top down.
23170
+ for (const dehydratedBlockId of hydrationQueue) {
23171
+ // The registry will have the item in the queue after each loop.
23172
+ const deferBlock = deferBlockRegistry.get(dehydratedBlockId);
23173
+ // Step 4: Run the actual trigger function to fetch dependencies.
23174
+ // Triggering a block adds any of its child defer blocks to the registry.
23137
23175
  await onTriggerFn(deferBlock);
23138
- // Step 4: Recursively trigger, fetch, and hydrate from the top of the hierarchy down
23139
- let hydratedBlock = deferBlock;
23140
- for (const dehydratedBlock of dehydratedBlocks) {
23141
- const hydratedInfo = await hydrateFromBlockName(injector, dehydratedBlock, onTriggerFn, hydratedBlocks);
23142
- hydratedBlock = hydratedInfo.deferBlock;
23143
- }
23144
- // TODO(incremental-hydration): this is likely where we want to do Step 5: some cleanup work in the
23145
- // DeferBlockRegistry.
23146
- return { deferBlock: hydratedBlock, hydratedBlocks };
23176
+ // Step 5: Remove the defer block from the list of hydrating blocks now that it's done hydrating
23177
+ deferBlockRegistry.hydrating.delete(dehydratedBlockId);
23147
23178
  }
23148
- else {
23149
- // TODO(incremental-hydration): this is likely an error, consider producing a `console.error`.
23150
- return { deferBlock: null, hydratedBlocks };
23179
+ const hydratedBlocks = new Set(hydrationQueue);
23180
+ // The last item in the queue was the original target block;
23181
+ const hydratedBlockId = hydrationQueue.slice(-1)[0];
23182
+ const hydratedBlock = deferBlockRegistry.get(hydratedBlockId);
23183
+ // Step 6: remove all hydrated blocks from the registry
23184
+ deferBlockRegistry.removeBlocks(hydratedBlocks);
23185
+ if (deferBlockRegistry.size === 0) {
23186
+ cleanupContracts(injector);
23151
23187
  }
23188
+ return { deferBlock: hydratedBlock, hydratedBlocks };
23152
23189
  }
23153
23190
  async function incrementallyHydrateFromBlockName(injector, blockName, triggerFn) {
23154
23191
  const { deferBlock, hydratedBlocks } = await hydrateFromBlockName(injector, blockName, triggerFn);
@@ -23325,10 +23362,10 @@ function ɵɵdefer(index, primaryTmplIndex, dependencyResolverFn, loadingTmplInd
23325
23362
  setLDeferBlockDetails(lView, adjustedIndex, lDetails);
23326
23363
  let registry = null;
23327
23364
  if (ssrUniqueId !== null) {
23328
- // TODO(incremental-hydration): explore how we can make
23329
- // `DeferBlockRegistry` tree-shakable for client-only cases.
23330
- registry = injector.get(DeferBlockRegistry);
23331
- // Also store this defer block in the registry.
23365
+ ngDevMode && assertIncrementalHydrationIsConfigured(injector);
23366
+ // Store this defer block in the registry, to have an access to
23367
+ // internal data structures from hydration runtime code.
23368
+ registry = injector.get(DEFER_BLOCK_REGISTRY);
23332
23369
  registry.add(ssrUniqueId, { lView, tNode, lContainer });
23333
23370
  }
23334
23371
  const cleanupTriggersFn = () => invokeAllTriggerCleanupFns(lDetails, registry);
@@ -24197,7 +24234,7 @@ function triggerDeferBlock(lView, tNode) {
24197
24234
  return;
24198
24235
  let registry = null;
24199
24236
  if (isIncrementalHydrationEnabled(injector)) {
24200
- registry = injector.get(DeferBlockRegistry);
24237
+ registry = injector.get(DEFER_BLOCK_REGISTRY);
24201
24238
  }
24202
24239
  // Defer block is triggered, cleanup all registered trigger functions.
24203
24240
  invokeAllTriggerCleanupFns(lDetails, registry);
@@ -27028,8 +27065,11 @@ class UniqueValueMultiKeyMap {
27028
27065
  set(key, value) {
27029
27066
  if (this.kvMap.has(key)) {
27030
27067
  let prevValue = this.kvMap.get(key);
27031
- ngDevMode &&
27032
- assertNotSame(prevValue, value, `Detected a duplicated value ${value} for the key ${key}`);
27068
+ // Note: we don't use `assertNotSame`, because the value needs to be stringified even if
27069
+ // there is no error which can freeze the browser for large values (see #58509).
27070
+ if (ngDevMode && prevValue === value) {
27071
+ throw new Error(`Detected a duplicated value ${value} for the key ${key}`);
27072
+ }
27033
27073
  if (this._vMap === undefined) {
27034
27074
  this._vMap = new Map();
27035
27075
  }
@@ -32010,8 +32050,13 @@ function ɵɵExternalStylesFeature(styleUrls) {
32010
32050
  return;
32011
32051
  }
32012
32052
  definition.getExternalStyles = (encapsulationId) => {
32013
- // Add encapsulation ID search parameter `component` to support external style encapsulation
32014
- const urls = styleUrls.map((value) => value + '?ngcomp' + (encapsulationId ? '=' + encodeURIComponent(encapsulationId) : ''));
32053
+ // Add encapsulation ID search parameter `ngcomp` to support external style encapsulation as well as the encapsulation mode
32054
+ // for usage tracking.
32055
+ const urls = styleUrls.map((value) => value +
32056
+ '?ngcomp' +
32057
+ (encapsulationId ? '=' + encodeURIComponent(encapsulationId) : '') +
32058
+ '&e=' +
32059
+ definition.encapsulation);
32015
32060
  return urls;
32016
32061
  };
32017
32062
  };
@@ -32680,27 +32725,23 @@ function ɵsetClassDebugInfo(type, debugInfo) {
32680
32725
  * Use of this source code is governed by an MIT-style license that can be
32681
32726
  * found in the LICENSE file at https://angular.dev/license
32682
32727
  */
32683
- /** Cached environment for all HMR calls. */
32684
- let hmrEnvironment = null;
32685
32728
  /**
32686
32729
  * Replaces the metadata of a component type and re-renders all live instances of the component.
32687
32730
  * @param type Class whose metadata will be replaced.
32688
32731
  * @param applyMetadata Callback that will apply a new set of metadata on the `type` when invoked.
32732
+ * @param environment Core runtime environment to use when applying the HMR update.
32689
32733
  * @param locals Local symbols from the source location that have to be exposed to the callback.
32690
32734
  * @codeGenApi
32691
32735
  */
32692
- function ɵɵreplaceMetadata(type, applyMetadata, locals) {
32736
+ function ɵɵreplaceMetadata(type, applyMetadata, environment, locals) {
32693
32737
  ngDevMode && assertComponentDef(type);
32694
32738
  const oldDef = getComponentDef(type);
32695
- if (hmrEnvironment === null) {
32696
- hmrEnvironment = getHmrEnv();
32697
- }
32698
32739
  // The reason `applyMetadata` is a callback that is invoked (almost) immediately is because
32699
32740
  // the compiler usually produces more code than just the component definition, e.g. there
32700
32741
  // can be functions for embedded views, the variables for the constant pool and `setClassMetadata`
32701
32742
  // calls. The callback allows us to keep them isolate from the rest of the app and to invoke
32702
32743
  // them at the right time.
32703
- applyMetadata.apply(null, [type, hmrEnvironment, ...locals]);
32744
+ applyMetadata.apply(null, [type, environment, ...locals]);
32704
32745
  // If a `tView` hasn't been created yet, it means that this component hasn't been instantianted
32705
32746
  // before. In this case there's nothing left for us to do aside from patching it in.
32706
32747
  if (oldDef.tView) {
@@ -32827,210 +32868,6 @@ function resetProjectionState(tNode) {
32827
32868
  tNode.projection = null;
32828
32869
  }
32829
32870
  }
32830
- /**
32831
- * The HMR replacement function needs access to all of `core`. This is similar to the
32832
- * `angularCoreEnv`, but without `replaceMetadata` to avoid circular dependencies. Furthermore,
32833
- * we can't something like a `nonHmrEnv` that is then combined with `replaceMetadata` to form the
32834
- * full environment, because it seems to break tree shaking internally.
32835
- *
32836
- * TODO(crisbeto): this is a temporary solution, we should be able to pass this in directly.
32837
- */
32838
- function getHmrEnv() {
32839
- return {
32840
- 'ɵɵattribute': ɵɵattribute,
32841
- 'ɵɵattributeInterpolate1': ɵɵattributeInterpolate1,
32842
- 'ɵɵattributeInterpolate2': ɵɵattributeInterpolate2,
32843
- 'ɵɵattributeInterpolate3': ɵɵattributeInterpolate3,
32844
- 'ɵɵattributeInterpolate4': ɵɵattributeInterpolate4,
32845
- 'ɵɵattributeInterpolate5': ɵɵattributeInterpolate5,
32846
- 'ɵɵattributeInterpolate6': ɵɵattributeInterpolate6,
32847
- 'ɵɵattributeInterpolate7': ɵɵattributeInterpolate7,
32848
- 'ɵɵattributeInterpolate8': ɵɵattributeInterpolate8,
32849
- 'ɵɵattributeInterpolateV': ɵɵattributeInterpolateV,
32850
- 'ɵɵdefineComponent': ɵɵdefineComponent,
32851
- 'ɵɵdefineDirective': ɵɵdefineDirective,
32852
- 'ɵɵdefineInjectable': ɵɵdefineInjectable,
32853
- 'ɵɵdefineInjector': ɵɵdefineInjector,
32854
- 'ɵɵdefineNgModule': ɵɵdefineNgModule,
32855
- 'ɵɵdefinePipe': ɵɵdefinePipe,
32856
- 'ɵɵdirectiveInject': ɵɵdirectiveInject,
32857
- 'ɵɵgetInheritedFactory': ɵɵgetInheritedFactory,
32858
- 'ɵɵinject': ɵɵinject,
32859
- 'ɵɵinjectAttribute': ɵɵinjectAttribute,
32860
- 'ɵɵinvalidFactory': ɵɵinvalidFactory,
32861
- 'ɵɵinvalidFactoryDep': ɵɵinvalidFactoryDep,
32862
- 'ɵɵtemplateRefExtractor': ɵɵtemplateRefExtractor,
32863
- 'ɵɵresetView': ɵɵresetView,
32864
- 'ɵɵHostDirectivesFeature': ɵɵHostDirectivesFeature,
32865
- 'ɵɵNgOnChangesFeature': ɵɵNgOnChangesFeature,
32866
- 'ɵɵProvidersFeature': ɵɵProvidersFeature,
32867
- 'ɵɵCopyDefinitionFeature': ɵɵCopyDefinitionFeature,
32868
- 'ɵɵInheritDefinitionFeature': ɵɵInheritDefinitionFeature,
32869
- 'ɵɵInputTransformsFeature': ɵɵInputTransformsFeature,
32870
- 'ɵɵExternalStylesFeature': ɵɵExternalStylesFeature,
32871
- 'ɵɵnextContext': ɵɵnextContext,
32872
- 'ɵɵnamespaceHTML': ɵɵnamespaceHTML,
32873
- 'ɵɵnamespaceMathML': ɵɵnamespaceMathML,
32874
- 'ɵɵnamespaceSVG': ɵɵnamespaceSVG,
32875
- 'ɵɵenableBindings': ɵɵenableBindings,
32876
- 'ɵɵdisableBindings': ɵɵdisableBindings,
32877
- 'ɵɵelementStart': ɵɵelementStart,
32878
- 'ɵɵelementEnd': ɵɵelementEnd,
32879
- 'ɵɵelement': ɵɵelement,
32880
- 'ɵɵelementContainerStart': ɵɵelementContainerStart,
32881
- 'ɵɵelementContainerEnd': ɵɵelementContainerEnd,
32882
- 'ɵɵelementContainer': ɵɵelementContainer,
32883
- 'ɵɵpureFunction0': ɵɵpureFunction0,
32884
- 'ɵɵpureFunction1': ɵɵpureFunction1,
32885
- 'ɵɵpureFunction2': ɵɵpureFunction2,
32886
- 'ɵɵpureFunction3': ɵɵpureFunction3,
32887
- 'ɵɵpureFunction4': ɵɵpureFunction4,
32888
- 'ɵɵpureFunction5': ɵɵpureFunction5,
32889
- 'ɵɵpureFunction6': ɵɵpureFunction6,
32890
- 'ɵɵpureFunction7': ɵɵpureFunction7,
32891
- 'ɵɵpureFunction8': ɵɵpureFunction8,
32892
- 'ɵɵpureFunctionV': ɵɵpureFunctionV,
32893
- 'ɵɵgetCurrentView': ɵɵgetCurrentView,
32894
- 'ɵɵrestoreView': ɵɵrestoreView,
32895
- 'ɵɵlistener': ɵɵlistener,
32896
- 'ɵɵprojection': ɵɵprojection,
32897
- 'ɵɵsyntheticHostProperty': ɵɵsyntheticHostProperty,
32898
- 'ɵɵsyntheticHostListener': ɵɵsyntheticHostListener,
32899
- 'ɵɵpipeBind1': ɵɵpipeBind1,
32900
- 'ɵɵpipeBind2': ɵɵpipeBind2,
32901
- 'ɵɵpipeBind3': ɵɵpipeBind3,
32902
- 'ɵɵpipeBind4': ɵɵpipeBind4,
32903
- 'ɵɵpipeBindV': ɵɵpipeBindV,
32904
- 'ɵɵprojectionDef': ɵɵprojectionDef,
32905
- 'ɵɵhostProperty': ɵɵhostProperty,
32906
- 'ɵɵproperty': ɵɵproperty,
32907
- 'ɵɵpropertyInterpolate': ɵɵpropertyInterpolate,
32908
- 'ɵɵpropertyInterpolate1': ɵɵpropertyInterpolate1,
32909
- 'ɵɵpropertyInterpolate2': ɵɵpropertyInterpolate2,
32910
- 'ɵɵpropertyInterpolate3': ɵɵpropertyInterpolate3,
32911
- 'ɵɵpropertyInterpolate4': ɵɵpropertyInterpolate4,
32912
- 'ɵɵpropertyInterpolate5': ɵɵpropertyInterpolate5,
32913
- 'ɵɵpropertyInterpolate6': ɵɵpropertyInterpolate6,
32914
- 'ɵɵpropertyInterpolate7': ɵɵpropertyInterpolate7,
32915
- 'ɵɵpropertyInterpolate8': ɵɵpropertyInterpolate8,
32916
- 'ɵɵpropertyInterpolateV': ɵɵpropertyInterpolateV,
32917
- 'ɵɵpipe': ɵɵpipe,
32918
- 'ɵɵqueryRefresh': ɵɵqueryRefresh,
32919
- 'ɵɵqueryAdvance': ɵɵqueryAdvance,
32920
- 'ɵɵviewQuery': ɵɵviewQuery,
32921
- 'ɵɵviewQuerySignal': ɵɵviewQuerySignal,
32922
- 'ɵɵloadQuery': ɵɵloadQuery,
32923
- 'ɵɵcontentQuery': ɵɵcontentQuery,
32924
- 'ɵɵcontentQuerySignal': ɵɵcontentQuerySignal,
32925
- 'ɵɵreference': ɵɵreference,
32926
- 'ɵɵclassMap': ɵɵclassMap,
32927
- 'ɵɵclassMapInterpolate1': ɵɵclassMapInterpolate1,
32928
- 'ɵɵclassMapInterpolate2': ɵɵclassMapInterpolate2,
32929
- 'ɵɵclassMapInterpolate3': ɵɵclassMapInterpolate3,
32930
- 'ɵɵclassMapInterpolate4': ɵɵclassMapInterpolate4,
32931
- 'ɵɵclassMapInterpolate5': ɵɵclassMapInterpolate5,
32932
- 'ɵɵclassMapInterpolate6': ɵɵclassMapInterpolate6,
32933
- 'ɵɵclassMapInterpolate7': ɵɵclassMapInterpolate7,
32934
- 'ɵɵclassMapInterpolate8': ɵɵclassMapInterpolate8,
32935
- 'ɵɵclassMapInterpolateV': ɵɵclassMapInterpolateV,
32936
- 'ɵɵstyleMap': ɵɵstyleMap,
32937
- 'ɵɵstyleMapInterpolate1': ɵɵstyleMapInterpolate1,
32938
- 'ɵɵstyleMapInterpolate2': ɵɵstyleMapInterpolate2,
32939
- 'ɵɵstyleMapInterpolate3': ɵɵstyleMapInterpolate3,
32940
- 'ɵɵstyleMapInterpolate4': ɵɵstyleMapInterpolate4,
32941
- 'ɵɵstyleMapInterpolate5': ɵɵstyleMapInterpolate5,
32942
- 'ɵɵstyleMapInterpolate6': ɵɵstyleMapInterpolate6,
32943
- 'ɵɵstyleMapInterpolate7': ɵɵstyleMapInterpolate7,
32944
- 'ɵɵstyleMapInterpolate8': ɵɵstyleMapInterpolate8,
32945
- 'ɵɵstyleMapInterpolateV': ɵɵstyleMapInterpolateV,
32946
- 'ɵɵstyleProp': ɵɵstyleProp,
32947
- 'ɵɵstylePropInterpolate1': ɵɵstylePropInterpolate1,
32948
- 'ɵɵstylePropInterpolate2': ɵɵstylePropInterpolate2,
32949
- 'ɵɵstylePropInterpolate3': ɵɵstylePropInterpolate3,
32950
- 'ɵɵstylePropInterpolate4': ɵɵstylePropInterpolate4,
32951
- 'ɵɵstylePropInterpolate5': ɵɵstylePropInterpolate5,
32952
- 'ɵɵstylePropInterpolate6': ɵɵstylePropInterpolate6,
32953
- 'ɵɵstylePropInterpolate7': ɵɵstylePropInterpolate7,
32954
- 'ɵɵstylePropInterpolate8': ɵɵstylePropInterpolate8,
32955
- 'ɵɵstylePropInterpolateV': ɵɵstylePropInterpolateV,
32956
- 'ɵɵclassProp': ɵɵclassProp,
32957
- 'ɵɵadvance': ɵɵadvance,
32958
- 'ɵɵtemplate': ɵɵtemplate,
32959
- 'ɵɵconditional': ɵɵconditional,
32960
- 'ɵɵdefer': ɵɵdefer,
32961
- 'ɵɵdeferWhen': ɵɵdeferWhen,
32962
- 'ɵɵdeferOnIdle': ɵɵdeferOnIdle,
32963
- 'ɵɵdeferOnImmediate': ɵɵdeferOnImmediate,
32964
- 'ɵɵdeferOnTimer': ɵɵdeferOnTimer,
32965
- 'ɵɵdeferOnHover': ɵɵdeferOnHover,
32966
- 'ɵɵdeferOnInteraction': ɵɵdeferOnInteraction,
32967
- 'ɵɵdeferOnViewport': ɵɵdeferOnViewport,
32968
- 'ɵɵdeferPrefetchWhen': ɵɵdeferPrefetchWhen,
32969
- 'ɵɵdeferPrefetchOnIdle': ɵɵdeferPrefetchOnIdle,
32970
- 'ɵɵdeferPrefetchOnImmediate': ɵɵdeferPrefetchOnImmediate,
32971
- 'ɵɵdeferPrefetchOnTimer': ɵɵdeferPrefetchOnTimer,
32972
- 'ɵɵdeferPrefetchOnHover': ɵɵdeferPrefetchOnHover,
32973
- 'ɵɵdeferPrefetchOnInteraction': ɵɵdeferPrefetchOnInteraction,
32974
- 'ɵɵdeferPrefetchOnViewport': ɵɵdeferPrefetchOnViewport,
32975
- 'ɵɵdeferHydrateWhen': ɵɵdeferHydrateWhen,
32976
- 'ɵɵdeferHydrateNever': ɵɵdeferHydrateNever,
32977
- 'ɵɵdeferHydrateOnIdle': ɵɵdeferHydrateOnIdle,
32978
- 'ɵɵdeferHydrateOnImmediate': ɵɵdeferHydrateOnImmediate,
32979
- 'ɵɵdeferHydrateOnTimer': ɵɵdeferHydrateOnTimer,
32980
- 'ɵɵdeferHydrateOnHover': ɵɵdeferHydrateOnHover,
32981
- 'ɵɵdeferHydrateOnInteraction': ɵɵdeferHydrateOnInteraction,
32982
- 'ɵɵdeferHydrateOnViewport': ɵɵdeferHydrateOnViewport,
32983
- 'ɵɵdeferEnableTimerScheduling': ɵɵdeferEnableTimerScheduling,
32984
- 'ɵɵrepeater': ɵɵrepeater,
32985
- 'ɵɵrepeaterCreate': ɵɵrepeaterCreate,
32986
- 'ɵɵrepeaterTrackByIndex': ɵɵrepeaterTrackByIndex,
32987
- 'ɵɵrepeaterTrackByIdentity': ɵɵrepeaterTrackByIdentity,
32988
- 'ɵɵcomponentInstance': ɵɵcomponentInstance,
32989
- 'ɵɵtext': ɵɵtext,
32990
- 'ɵɵtextInterpolate': ɵɵtextInterpolate,
32991
- 'ɵɵtextInterpolate1': ɵɵtextInterpolate1,
32992
- 'ɵɵtextInterpolate2': ɵɵtextInterpolate2,
32993
- 'ɵɵtextInterpolate3': ɵɵtextInterpolate3,
32994
- 'ɵɵtextInterpolate4': ɵɵtextInterpolate4,
32995
- 'ɵɵtextInterpolate5': ɵɵtextInterpolate5,
32996
- 'ɵɵtextInterpolate6': ɵɵtextInterpolate6,
32997
- 'ɵɵtextInterpolate7': ɵɵtextInterpolate7,
32998
- 'ɵɵtextInterpolate8': ɵɵtextInterpolate8,
32999
- 'ɵɵtextInterpolateV': ɵɵtextInterpolateV,
33000
- 'ɵɵi18n': ɵɵi18n,
33001
- 'ɵɵi18nAttributes': ɵɵi18nAttributes,
33002
- 'ɵɵi18nExp': ɵɵi18nExp,
33003
- 'ɵɵi18nStart': ɵɵi18nStart,
33004
- 'ɵɵi18nEnd': ɵɵi18nEnd,
33005
- 'ɵɵi18nApply': ɵɵi18nApply,
33006
- 'ɵɵi18nPostprocess': ɵɵi18nPostprocess,
33007
- 'ɵɵresolveWindow': ɵɵresolveWindow,
33008
- 'ɵɵresolveDocument': ɵɵresolveDocument,
33009
- 'ɵɵresolveBody': ɵɵresolveBody,
33010
- 'ɵɵsetComponentScope': ɵɵsetComponentScope,
33011
- 'ɵɵsetNgModuleScope': ɵɵsetNgModuleScope,
33012
- 'ɵɵregisterNgModuleType': registerNgModuleType,
33013
- 'ɵɵgetComponentDepsFactory': ɵɵgetComponentDepsFactory,
33014
- 'ɵsetClassDebugInfo': ɵsetClassDebugInfo,
33015
- 'ɵɵdeclareLet': ɵɵdeclareLet,
33016
- 'ɵɵstoreLet': ɵɵstoreLet,
33017
- 'ɵɵreadContextLet': ɵɵreadContextLet,
33018
- 'ɵɵsanitizeHtml': ɵɵsanitizeHtml,
33019
- 'ɵɵsanitizeStyle': ɵɵsanitizeStyle,
33020
- 'ɵɵsanitizeResourceUrl': ɵɵsanitizeResourceUrl,
33021
- 'ɵɵsanitizeScript': ɵɵsanitizeScript,
33022
- 'ɵɵsanitizeUrl': ɵɵsanitizeUrl,
33023
- 'ɵɵsanitizeUrlOrResourceUrl': ɵɵsanitizeUrlOrResourceUrl,
33024
- 'ɵɵtrustConstantHtml': ɵɵtrustConstantHtml,
33025
- 'ɵɵtrustConstantResourceUrl': ɵɵtrustConstantResourceUrl,
33026
- 'ɵɵvalidateIframeAttribute': ɵɵvalidateIframeAttribute,
33027
- 'forwardRef': forwardRef,
33028
- 'resolveForwardRef': resolveForwardRef,
33029
- 'ɵɵtwoWayProperty': ɵɵtwoWayProperty,
33030
- 'ɵɵtwoWayBindingSet': ɵɵtwoWayBindingSet,
33031
- 'ɵɵtwoWayListener': ɵɵtwoWayListener,
33032
- };
33033
- }
33034
32871
 
33035
32872
  /**
33036
32873
  * A mapping of the @angular/core API surface used in generated expressions to the actual symbols.
@@ -34156,7 +33993,7 @@ function directiveMetadata(type, metadata) {
34156
33993
  exportAs: extractExportAs(metadata.exportAs),
34157
33994
  providers: metadata.providers || null,
34158
33995
  viewQueries: extractQueriesMetadata(type, propMetadata, isViewQuery),
34159
- isStandalone: metadata.standalone === undefined ? NG_STANDALONE_DEFAULT_VALUE : !!metadata.standalone,
33996
+ isStandalone: metadata.standalone === undefined ? true : !!metadata.standalone,
34160
33997
  isSignal: !!metadata.signals,
34161
33998
  hostDirectives: metadata.hostDirectives?.map((directive) => typeof directive === 'function' ? { directive } : directive) || null,
34162
33999
  };
@@ -34314,7 +34151,7 @@ function getPipeMetadata(type, meta) {
34314
34151
  name: type.name,
34315
34152
  pipeName: meta.name,
34316
34153
  pure: meta.pure !== undefined ? meta.pure : true,
34317
- isStandalone: meta.standalone === undefined ? NG_STANDALONE_DEFAULT_VALUE : !!meta.standalone,
34154
+ isStandalone: meta.standalone === undefined ? true : !!meta.standalone,
34318
34155
  };
34319
34156
  }
34320
34157
 
@@ -34405,7 +34242,7 @@ class Version {
34405
34242
  /**
34406
34243
  * @publicApi
34407
34244
  */
34408
- const VERSION = new Version('19.0.0-rc.0');
34245
+ const VERSION = new Version('19.0.0-rc.1');
34409
34246
 
34410
34247
  /**
34411
34248
  * Combination of NgModuleFactory and ComponentFactories.
@@ -38477,7 +38314,7 @@ function withEventReplay() {
38477
38314
  // being present on the same page. We only want to enable event replay for the
38478
38315
  // apps that actually want it.
38479
38316
  if (!appsWithEventReplay.has(appRef)) {
38480
- const jsActionMap = inject(BLOCK_ELEMENT_MAP);
38317
+ const jsActionMap = inject(JSACTION_BLOCK_ELEMENT_MAP);
38481
38318
  if (shouldEnableEventReplay(injector)) {
38482
38319
  setStashFn((rEl, eventName, listenerFn) => {
38483
38320
  sharedStashFunction(rEl, eventName, listenerFn);
@@ -38605,11 +38442,6 @@ async function hydrateAndInvokeBlockListeners(blockName, injector, event, curren
38605
38442
  blockEventQueue.push({ event, currentTarget });
38606
38443
  const { deferBlock, hydratedBlocks } = await hydrateFromBlockName(injector, blockName, fetchAndRenderDeferBlock);
38607
38444
  if (deferBlock !== null) {
38608
- // TODO(incremental-hydration): extract this work into a post
38609
- // hydration cleanup function
38610
- const deferBlockRegistry = injector.get(DeferBlockRegistry);
38611
- deferBlockRegistry.hydrating.delete(blockName);
38612
- hydratedBlocks.add(blockName);
38613
38445
  const appRef = injector.get(ApplicationRef);
38614
38446
  await appRef.whenStable();
38615
38447
  replayQueuedBlockEvents(hydratedBlocks, injector);
@@ -38651,7 +38483,7 @@ function convertHydrateTriggersToJsAction(triggers) {
38651
38483
  return actionList;
38652
38484
  }
38653
38485
  function appendBlocksToJSActionMap(el, injector) {
38654
- const jsActionMap = injector.get(BLOCK_ELEMENT_MAP);
38486
+ const jsActionMap = injector.get(JSACTION_BLOCK_ELEMENT_MAP);
38655
38487
  sharedMapFunction(el, jsActionMap);
38656
38488
  }
38657
38489
  function gatherDeferBlocksByJSActionAttribute(doc) {
@@ -39331,6 +39163,11 @@ function annotateDeferBlockRootNodesWithJsAction(tDetails, rootNodes, parentDefe
39331
39163
  }
39332
39164
  }
39333
39165
 
39166
+ /**
39167
+ * Initializes incremental hydration for non-JSAction triggers. This gathers up
39168
+ * all the parent / child relationships of defer blocks and identifies all the
39169
+ * serialized defer blocks that would need to be potentially hydrated later.
39170
+ */
39334
39171
  function bootstrapIncrementalHydration(doc, injector) {
39335
39172
  const deferBlockData = processBlockData(injector);
39336
39173
  const commentsByBlockId = gatherDeferBlocksCommentNodes(doc, doc.body);
@@ -39339,23 +39176,31 @@ function bootstrapIncrementalHydration(doc, injector) {
39339
39176
  function isTimerTrigger(triggerInfo) {
39340
39177
  return typeof triggerInfo === 'object' && triggerInfo.trigger === 5 /* DeferBlockTrigger.Timer */;
39341
39178
  }
39342
- function hasHydrateTimerTrigger(blockData) {
39343
- return (blockData[DEFER_HYDRATE_TRIGGERS]?.filter((t) => isTimerTrigger(t)) ?? []).length > 0;
39179
+ function getHydrateTimerTrigger(blockData) {
39180
+ const trigger = blockData[DEFER_HYDRATE_TRIGGERS]?.find((t) => isTimerTrigger(t));
39181
+ return trigger?.delay ?? null;
39344
39182
  }
39345
39183
  function hasHydrateTrigger(blockData, trigger) {
39346
39184
  return blockData[DEFER_HYDRATE_TRIGGERS]?.includes(trigger) ?? false;
39347
39185
  }
39186
+ /**
39187
+ * Creates a summary of the given serialized defer block, which is used later to properly initialize
39188
+ * specific triggers.
39189
+ */
39348
39190
  function createBlockSummary(blockInfo) {
39349
39191
  return {
39350
39192
  data: blockInfo,
39351
39193
  hydrate: {
39352
39194
  idle: hasHydrateTrigger(blockInfo, 0 /* DeferBlockTrigger.Idle */),
39353
39195
  immediate: hasHydrateTrigger(blockInfo, 1 /* DeferBlockTrigger.Immediate */),
39354
- timer: hasHydrateTimerTrigger(blockInfo),
39196
+ timer: getHydrateTimerTrigger(blockInfo),
39355
39197
  viewport: hasHydrateTrigger(blockInfo, 2 /* DeferBlockTrigger.Viewport */),
39356
39198
  },
39357
39199
  };
39358
39200
  }
39201
+ /**
39202
+ * Processes all of the defer block data in the transfer state and creates a map of the summaries
39203
+ */
39359
39204
  function processBlockData(injector) {
39360
39205
  const blockData = retrieveDeferBlockData(injector);
39361
39206
  let blockDetails = new Map();
@@ -39364,26 +39209,32 @@ function processBlockData(injector) {
39364
39209
  }
39365
39210
  return blockDetails;
39366
39211
  }
39212
+ /**
39213
+ * Retrieves all comments nodes that contain ngh comments referring to a defer block
39214
+ */
39367
39215
  function gatherDeferBlocksCommentNodes(doc, node) {
39368
- const commentNodesIterator = doc.createNodeIterator(node ?? doc.body, NodeFilter.SHOW_COMMENT, {
39369
- acceptNode(node) {
39370
- return node.textContent?.match('ngh=') ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;
39371
- },
39372
- });
39216
+ const commentNodesIterator = doc.createNodeIterator(node, NodeFilter.SHOW_COMMENT, { acceptNode });
39373
39217
  let currentNode;
39374
39218
  const nodesByBlockId = new Map();
39375
39219
  while ((currentNode = commentNodesIterator.nextNode())) {
39376
- const result = currentNode?.textContent?.match('d[0-9]+');
39377
- if (result?.length === 1) {
39378
- nodesByBlockId.set(result[0], currentNode);
39220
+ // TODO(incremental-hydration: convert this to use string parsing rather than regex
39221
+ const regex = new RegExp(/^\s*ngh=(d[0-9]+)/g);
39222
+ const result = regex.exec(currentNode?.textContent ?? '');
39223
+ if (result && result?.length > 0) {
39224
+ nodesByBlockId.set(result[1], currentNode);
39379
39225
  }
39380
39226
  }
39381
39227
  return nodesByBlockId;
39382
39228
  }
39383
- function getTimerDelay(summary) {
39384
- const hydrateTrigger = summary.data[DEFER_HYDRATE_TRIGGERS].find((t) => isTimerTrigger(t));
39385
- return hydrateTrigger.delay;
39229
+ function acceptNode(node) {
39230
+ return node.textContent?.trimStart().startsWith('ngh=')
39231
+ ? NodeFilter.FILTER_ACCEPT
39232
+ : NodeFilter.FILTER_REJECT;
39386
39233
  }
39234
+ /**
39235
+ * Loops through all defer block summaries and ensures all the blocks triggers are
39236
+ * properly initialized
39237
+ */
39387
39238
  function processAndInitTriggers(injector, blockData, nodes) {
39388
39239
  const idleElements = [];
39389
39240
  const timerElements = [];
@@ -39399,20 +39250,20 @@ function processAndInitTriggers(injector, blockData, nodes) {
39399
39250
  if (currentNode.nodeType !== Node.ELEMENT_NODE) {
39400
39251
  continue;
39401
39252
  }
39402
- const et = { el: currentNode, blockName: blockId };
39253
+ const elementTrigger = { el: currentNode, blockName: blockId };
39403
39254
  // hydrate
39404
39255
  if (blockSummary.hydrate.idle) {
39405
- idleElements.push(et);
39256
+ idleElements.push(elementTrigger);
39406
39257
  }
39407
39258
  if (blockSummary.hydrate.immediate) {
39408
- immediateElements.push(et);
39259
+ immediateElements.push(elementTrigger);
39409
39260
  }
39410
- if (blockSummary.hydrate.timer) {
39411
- et.delay = getTimerDelay(blockSummary);
39412
- timerElements.push(et);
39261
+ if (blockSummary.hydrate.timer !== null) {
39262
+ elementTrigger.delay = blockSummary.hydrate.timer;
39263
+ timerElements.push(elementTrigger);
39413
39264
  }
39414
39265
  if (blockSummary.hydrate.viewport) {
39415
- viewportElements.push(et);
39266
+ viewportElements.push(elementTrigger);
39416
39267
  }
39417
39268
  }
39418
39269
  }
@@ -39422,32 +39273,32 @@ function processAndInitTriggers(injector, blockData, nodes) {
39422
39273
  setViewportTriggers(injector, viewportElements);
39423
39274
  setTimerTriggers(injector, timerElements);
39424
39275
  }
39425
- async function setIdleTriggers(injector, ets) {
39426
- for (const elementTrigger of ets) {
39427
- const registry = injector.get(DeferBlockRegistry);
39276
+ async function setIdleTriggers(injector, elementTriggers) {
39277
+ for (const elementTrigger of elementTriggers) {
39278
+ const registry = injector.get(DEFER_BLOCK_REGISTRY);
39428
39279
  const onInvoke = () => incrementallyHydrateFromBlockName(injector, elementTrigger.blockName, fetchAndRenderDeferBlock);
39429
39280
  const cleanupFn = onIdle(onInvoke, injector);
39430
39281
  registry.addCleanupFn(elementTrigger.blockName, cleanupFn);
39431
39282
  }
39432
39283
  }
39433
- async function setViewportTriggers(injector, ets) {
39434
- for (let et of ets) {
39435
- onViewport(et.el, async () => {
39436
- await incrementallyHydrateFromBlockName(injector, et.blockName, fetchAndRenderDeferBlock);
39284
+ async function setViewportTriggers(injector, elementTriggers) {
39285
+ for (let elementTrigger of elementTriggers) {
39286
+ onViewport(elementTrigger.el, async () => {
39287
+ await incrementallyHydrateFromBlockName(injector, elementTrigger.blockName, fetchAndRenderDeferBlock);
39437
39288
  }, injector);
39438
39289
  }
39439
39290
  }
39440
- async function setTimerTriggers(injector, ets) {
39441
- for (const elementTrigger of ets) {
39442
- const registry = injector.get(DeferBlockRegistry);
39291
+ async function setTimerTriggers(injector, elementTriggers) {
39292
+ for (const elementTrigger of elementTriggers) {
39293
+ const registry = injector.get(DEFER_BLOCK_REGISTRY);
39443
39294
  const onInvoke = async () => await incrementallyHydrateFromBlockName(injector, elementTrigger.blockName, fetchAndRenderDeferBlock);
39444
39295
  const timerFn = onTimer(elementTrigger.delay);
39445
39296
  const cleanupFn = timerFn(onInvoke, injector);
39446
39297
  registry.addCleanupFn(elementTrigger.blockName, cleanupFn);
39447
39298
  }
39448
39299
  }
39449
- async function setImmediateTriggers(injector, ets) {
39450
- for (const elementTrigger of ets) {
39300
+ async function setImmediateTriggers(injector, elementTriggers) {
39301
+ for (const elementTrigger of elementTriggers) {
39451
39302
  await incrementallyHydrateFromBlockName(injector, elementTrigger.blockName, fetchAndRenderDeferBlock);
39452
39303
  }
39453
39304
  }
@@ -39463,9 +39314,6 @@ function retrieveDeferBlockDataImpl(injector) {
39463
39314
  const transferState = injector.get(TransferState, null, { optional: true });
39464
39315
  if (transferState !== null) {
39465
39316
  const nghDeferData = transferState.get(NGH_DEFER_BLOCKS_KEY, {});
39466
- // If the `ngh` attribute exists and has a non-empty value,
39467
- // the hydration info *must* be present in the TransferState.
39468
- // If there is no data for some reasons, this is an error.
39469
39317
  ngDevMode &&
39470
39318
  assertDefined(nghDeferData, 'Unable to retrieve defer block info from the TransferState.');
39471
39319
  return nghDeferData;
@@ -39737,6 +39585,10 @@ function withIncrementalHydration() {
39737
39585
  provide: IS_INCREMENTAL_HYDRATION_ENABLED,
39738
39586
  useValue: true,
39739
39587
  },
39588
+ {
39589
+ provide: DEFER_BLOCK_REGISTRY,
39590
+ useClass: DeferBlockRegistry,
39591
+ },
39740
39592
  {
39741
39593
  provide: ENVIRONMENT_INITIALIZER,
39742
39594
  useValue: () => {
@@ -41114,5 +40966,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
41114
40966
  * Generated bundle index. Do not edit.
41115
40967
  */
41116
40968
 
41117
- 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, 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, 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, LifecycleHooksFeature as ɵLifecycleHooksFeature, 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, NG_STANDALONE_DEFAULT_VALUE as ɵNG_STANDALONE_DEFAULT_VALUE, 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 ɵPendingTasks, PendingTasksInternal as ɵPendingTasksInternal, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, USE_RUNTIME_DEPS_TRACKER_FOR_JIT as ɵUSE_RUNTIME_DEPS_TRACKER_FOR_JIT, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, 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 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, 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, whenStable as ɵwhenStable, withDomHydration as ɵwithDomHydration, withEventReplay as ɵwithEventReplay, withI18nSupport as ɵwithI18nSupport, withIncrementalHydration as ɵwithIncrementalHydration, ɵɵCopyDefinitionFeature, ɵɵExternalStylesFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵInputTransformsFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵ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 };
40969
+ 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, 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, 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, LifecycleHooksFeature as ɵLifecycleHooksFeature, 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 ɵPendingTasks, PendingTasksInternal as ɵPendingTasksInternal, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, USE_RUNTIME_DEPS_TRACKER_FOR_JIT as ɵUSE_RUNTIME_DEPS_TRACKER_FOR_JIT, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, 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 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, 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, whenStable as ɵwhenStable, withDomHydration as ɵwithDomHydration, withEventReplay as ɵwithEventReplay, withI18nSupport as ɵwithI18nSupport, withIncrementalHydration as ɵwithIncrementalHydration, ɵɵCopyDefinitionFeature, ɵɵExternalStylesFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵInputTransformsFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵ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 };
41118
40970
  //# sourceMappingURL=core.mjs.map