@angular/core 19.1.5 → 19.1.7

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 (35) hide show
  1. package/fesm2022/core.mjs +648 -638
  2. package/fesm2022/core.mjs.map +1 -1
  3. package/fesm2022/primitives/event-dispatch.mjs +1 -1
  4. package/fesm2022/primitives/signals.mjs +1 -1
  5. package/fesm2022/rxjs-interop.mjs +1 -1
  6. package/fesm2022/testing.mjs +4 -4
  7. package/index.d.ts +24 -36
  8. package/package.json +1 -1
  9. package/primitives/event-dispatch/index.d.ts +1 -1
  10. package/primitives/signals/index.d.ts +1 -1
  11. package/rxjs-interop/index.d.ts +1 -1
  12. package/schematics/bundles/{apply_import_manager-57619f3c.js → apply_import_manager-3220dafc.js} +3 -3
  13. package/schematics/bundles/{checker-ce908760.js → checker-2bdbb582.js} +101 -63
  14. package/schematics/bundles/cleanup-unused-imports.js +6 -6
  15. package/schematics/bundles/{compiler_host-33b24174.js → compiler_host-833d3812.js} +2 -2
  16. package/schematics/bundles/control-flow-migration.js +10 -3
  17. package/schematics/bundles/explicit-standalone-flag.js +5 -5
  18. package/schematics/bundles/{imports-31a38653.js → imports-abe29092.js} +1 -1
  19. package/schematics/bundles/{index-59a1204f.js → index-4978a91a.js} +4 -4
  20. package/schematics/bundles/{index-d6e51169.js → index-be586082.js} +4 -4
  21. package/schematics/bundles/inject-migration.js +6 -6
  22. package/schematics/bundles/{leading_space-6e7a8ec6.js → leading_space-d190b83b.js} +1 -1
  23. package/schematics/bundles/{migrate_ts_type_references-2c37e645.js → migrate_ts_type_references-d2b2e8f1.js} +6 -6
  24. package/schematics/bundles/{nodes-88c2157f.js → nodes-a9f0b985.js} +2 -2
  25. package/schematics/bundles/output-migration.js +6 -6
  26. package/schematics/bundles/pending-tasks.js +5 -5
  27. package/schematics/bundles/{program-5512058c.js → program-f43dcb10.js} +35 -21
  28. package/schematics/bundles/{project_tsconfig_paths-6c9cde78.js → project_tsconfig_paths-e9ccccbf.js} +1 -1
  29. package/schematics/bundles/provide-initializer.js +5 -5
  30. package/schematics/bundles/route-lazy-loading.js +4 -4
  31. package/schematics/bundles/signal-input-migration.js +8 -8
  32. package/schematics/bundles/signal-queries-migration.js +8 -8
  33. package/schematics/bundles/signals.js +8 -8
  34. package/schematics/bundles/standalone-migration.js +8 -8
  35. package/testing/index.d.ts +1 -1
package/fesm2022/core.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v19.1.5
2
+ * @license Angular v19.1.7
3
3
  * (c) 2010-2024 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -350,23 +350,21 @@ function stringify(token) {
350
350
  return token;
351
351
  }
352
352
  if (Array.isArray(token)) {
353
- return '[' + token.map(stringify).join(', ') + ']';
353
+ return `[${token.map(stringify).join(', ')}]`;
354
354
  }
355
355
  if (token == null) {
356
356
  return '' + token;
357
357
  }
358
- if (token.overriddenName) {
359
- return `${token.overriddenName}`;
358
+ const name = token.overriddenName || token.name;
359
+ if (name) {
360
+ return `${name}`;
360
361
  }
361
- if (token.name) {
362
- return `${token.name}`;
362
+ const result = token.toString();
363
+ if (result == null) {
364
+ return '' + result;
363
365
  }
364
- const res = token.toString();
365
- if (res == null) {
366
- return '' + res;
367
- }
368
- const newLineIndex = res.indexOf('\n');
369
- return newLineIndex === -1 ? res : res.substring(0, newLineIndex);
366
+ const newLineIndex = result.indexOf('\n');
367
+ return newLineIndex >= 0 ? result.slice(0, newLineIndex) : result;
370
368
  }
371
369
  /**
372
370
  * Concatenates two strings with separator, allocating new strings only when necessary.
@@ -377,13 +375,11 @@ function stringify(token) {
377
375
  * @returns concatenated string.
378
376
  */
379
377
  function concatStringsWithSpace(before, after) {
380
- return before == null || before === ''
381
- ? after === null
382
- ? ''
383
- : after
384
- : after == null || after === ''
385
- ? before
386
- : before + ' ' + after;
378
+ if (!before)
379
+ return after || '';
380
+ if (!after)
381
+ return before;
382
+ return `${before} ${after}`;
387
383
  }
388
384
  /**
389
385
  * Ellipses the string in the middle when longer than the max length
@@ -8249,23 +8245,12 @@ function assertDomElement(value) {
8249
8245
  function extractInputDebugMetadata(inputs) {
8250
8246
  const res = {};
8251
8247
  for (const key in inputs) {
8252
- if (!inputs.hasOwnProperty(key)) {
8253
- continue;
8254
- }
8255
- const value = inputs[key];
8256
- if (value === undefined) {
8257
- continue;
8258
- }
8259
- let minifiedName;
8260
- if (Array.isArray(value)) {
8261
- minifiedName = value[0];
8262
- // flags are not used for now.
8263
- // TODO: Consider exposing flag information in discovery.
8264
- }
8265
- else {
8266
- minifiedName = value;
8248
+ if (inputs.hasOwnProperty(key)) {
8249
+ const value = inputs[key];
8250
+ if (value !== undefined) {
8251
+ res[key] = value[0];
8252
+ }
8267
8253
  }
8268
- res[key] = minifiedName;
8269
8254
  }
8270
8255
  return res;
8271
8256
  }
@@ -12193,6 +12178,206 @@ function setupStaticAttributes(renderer, element, tNode) {
12193
12178
  }
12194
12179
  }
12195
12180
 
12181
+ /**
12182
+ * Creates a TView instance
12183
+ *
12184
+ * @param type Type of `TView`.
12185
+ * @param declTNode Declaration location of this `TView`.
12186
+ * @param templateFn Template function
12187
+ * @param decls The number of nodes, local refs, and pipes in this template
12188
+ * @param directives Registry of directives for this view
12189
+ * @param pipes Registry of pipes for this view
12190
+ * @param viewQuery View queries for this view
12191
+ * @param schemas Schemas for this view
12192
+ * @param consts Constants for this view
12193
+ */
12194
+ function createTView(type, declTNode, templateFn, decls, vars, directives, pipes, viewQuery, schemas, constsOrFactory, ssrId) {
12195
+ ngDevMode && ngDevMode.tView++;
12196
+ const bindingStartIndex = HEADER_OFFSET + decls;
12197
+ // This length does not yet contain host bindings from child directives because at this point,
12198
+ // we don't know which directives are active on this template. As soon as a directive is matched
12199
+ // that has a host binding, we will update the blueprint with that def's hostVars count.
12200
+ const initialViewLength = bindingStartIndex + vars;
12201
+ const blueprint = createViewBlueprint(bindingStartIndex, initialViewLength);
12202
+ const consts = typeof constsOrFactory === 'function' ? constsOrFactory() : constsOrFactory;
12203
+ const tView = (blueprint[TVIEW] = {
12204
+ type: type,
12205
+ blueprint: blueprint,
12206
+ template: templateFn,
12207
+ queries: null,
12208
+ viewQuery: viewQuery,
12209
+ declTNode: declTNode,
12210
+ data: blueprint.slice().fill(null, bindingStartIndex),
12211
+ bindingStartIndex: bindingStartIndex,
12212
+ expandoStartIndex: initialViewLength,
12213
+ hostBindingOpCodes: null,
12214
+ firstCreatePass: true,
12215
+ firstUpdatePass: true,
12216
+ staticViewQueries: false,
12217
+ staticContentQueries: false,
12218
+ preOrderHooks: null,
12219
+ preOrderCheckHooks: null,
12220
+ contentHooks: null,
12221
+ contentCheckHooks: null,
12222
+ viewHooks: null,
12223
+ viewCheckHooks: null,
12224
+ destroyHooks: null,
12225
+ cleanup: null,
12226
+ contentQueries: null,
12227
+ components: null,
12228
+ directiveRegistry: typeof directives === 'function' ? directives() : directives,
12229
+ pipeRegistry: typeof pipes === 'function' ? pipes() : pipes,
12230
+ firstChild: null,
12231
+ schemas: schemas,
12232
+ consts: consts,
12233
+ incompleteFirstPass: false,
12234
+ ssrId,
12235
+ });
12236
+ if (ngDevMode) {
12237
+ // For performance reasons it is important that the tView retains the same shape during runtime.
12238
+ // (To make sure that all of the code is monomorphic.) For this reason we seal the object to
12239
+ // prevent class transitions.
12240
+ Object.seal(tView);
12241
+ }
12242
+ return tView;
12243
+ }
12244
+ function createViewBlueprint(bindingStartIndex, initialViewLength) {
12245
+ const blueprint = [];
12246
+ for (let i = 0; i < initialViewLength; i++) {
12247
+ blueprint.push(i < bindingStartIndex ? null : NO_CHANGE);
12248
+ }
12249
+ return blueprint;
12250
+ }
12251
+ /**
12252
+ * Gets TView from a template function or creates a new TView
12253
+ * if it doesn't already exist.
12254
+ *
12255
+ * @param def ComponentDef
12256
+ * @returns TView
12257
+ */
12258
+ function getOrCreateComponentTView(def) {
12259
+ const tView = def.tView;
12260
+ // Create a TView if there isn't one, or recreate it if the first create pass didn't
12261
+ // complete successfully since we can't know for sure whether it's in a usable shape.
12262
+ if (tView === null || tView.incompleteFirstPass) {
12263
+ // Declaration node here is null since this function is called when we dynamically create a
12264
+ // component and hence there is no declaration.
12265
+ const declTNode = null;
12266
+ return (def.tView = createTView(1 /* TViewType.Component */, declTNode, def.template, def.decls, def.vars, def.directiveDefs, def.pipeDefs, def.viewQuery, def.schemas, def.consts, def.id));
12267
+ }
12268
+ return tView;
12269
+ }
12270
+ function createLView(parentLView, tView, context, flags, host, tHostNode, environment, renderer, injector, embeddedViewInjector, hydrationInfo) {
12271
+ const lView = tView.blueprint.slice();
12272
+ lView[HOST] = host;
12273
+ lView[FLAGS] =
12274
+ flags |
12275
+ 4 /* LViewFlags.CreationMode */ |
12276
+ 128 /* LViewFlags.Attached */ |
12277
+ 8 /* LViewFlags.FirstLViewPass */ |
12278
+ 64 /* LViewFlags.Dirty */ |
12279
+ 1024 /* LViewFlags.RefreshView */;
12280
+ if (embeddedViewInjector !== null ||
12281
+ (parentLView && parentLView[FLAGS] & 2048 /* LViewFlags.HasEmbeddedViewInjector */)) {
12282
+ lView[FLAGS] |= 2048 /* LViewFlags.HasEmbeddedViewInjector */;
12283
+ }
12284
+ resetPreOrderHookFlags(lView);
12285
+ ngDevMode && tView.declTNode && parentLView && assertTNodeForLView(tView.declTNode, parentLView);
12286
+ lView[PARENT] = lView[DECLARATION_VIEW] = parentLView;
12287
+ lView[CONTEXT] = context;
12288
+ lView[ENVIRONMENT] = (environment || (parentLView && parentLView[ENVIRONMENT]));
12289
+ ngDevMode && assertDefined(lView[ENVIRONMENT], 'LViewEnvironment is required');
12290
+ lView[RENDERER] = (renderer || (parentLView && parentLView[RENDERER]));
12291
+ ngDevMode && assertDefined(lView[RENDERER], 'Renderer is required');
12292
+ lView[INJECTOR] = injector || (parentLView && parentLView[INJECTOR]) || null;
12293
+ lView[T_HOST] = tHostNode;
12294
+ lView[ID] = getUniqueLViewId();
12295
+ lView[HYDRATION] = hydrationInfo;
12296
+ lView[EMBEDDED_VIEW_INJECTOR] = embeddedViewInjector;
12297
+ ngDevMode &&
12298
+ assertEqual(tView.type == 2 /* TViewType.Embedded */ ? parentLView !== null : true, true, 'Embedded views must have parentLView');
12299
+ lView[DECLARATION_COMPONENT_VIEW] =
12300
+ tView.type == 2 /* TViewType.Embedded */ ? parentLView[DECLARATION_COMPONENT_VIEW] : lView;
12301
+ return lView;
12302
+ }
12303
+ function createComponentLView(lView, hostTNode, def) {
12304
+ const native = getNativeByTNode(hostTNode, lView);
12305
+ const tView = getOrCreateComponentTView(def);
12306
+ // Only component views should be added to the view tree directly. Embedded views are
12307
+ // accessed through their containers because they may be removed / re-added later.
12308
+ const rendererFactory = lView[ENVIRONMENT].rendererFactory;
12309
+ const componentView = addToEndOfViewTree(lView, createLView(lView, tView, null, getInitialLViewFlagsFromDef(def), native, hostTNode, null, rendererFactory.createRenderer(native, def), null, null, null));
12310
+ // Component view will always be created before any injected LContainers,
12311
+ // so this is a regular element, wrap it with the component view
12312
+ return (lView[hostTNode.index] = componentView);
12313
+ }
12314
+ /**
12315
+ * Gets the initial set of LView flags based on the component definition that the LView represents.
12316
+ * @param def Component definition from which to determine the flags.
12317
+ */
12318
+ function getInitialLViewFlagsFromDef(def) {
12319
+ let flags = 16 /* LViewFlags.CheckAlways */;
12320
+ if (def.signals) {
12321
+ flags = 4096 /* LViewFlags.SignalView */;
12322
+ }
12323
+ else if (def.onPush) {
12324
+ flags = 64 /* LViewFlags.Dirty */;
12325
+ }
12326
+ return flags;
12327
+ }
12328
+ /**
12329
+ * When elements are created dynamically after a view blueprint is created (e.g. through
12330
+ * i18nApply()), we need to adjust the blueprint for future template passes.
12331
+ *
12332
+ * @param tView `TView` associated with `LView`
12333
+ * @param lView The `LView` containing the blueprint to adjust
12334
+ * @param numSlotsToAlloc The number of slots to alloc in the LView, should be >0
12335
+ * @param initialValue Initial value to store in blueprint
12336
+ */
12337
+ function allocExpando(tView, lView, numSlotsToAlloc, initialValue) {
12338
+ if (numSlotsToAlloc === 0)
12339
+ return -1;
12340
+ if (ngDevMode) {
12341
+ assertFirstCreatePass(tView);
12342
+ assertSame(tView, lView[TVIEW], '`LView` must be associated with `TView`!');
12343
+ assertEqual(tView.data.length, lView.length, 'Expecting LView to be same size as TView');
12344
+ assertEqual(tView.data.length, tView.blueprint.length, 'Expecting Blueprint to be same size as TView');
12345
+ assertFirstUpdatePass(tView);
12346
+ }
12347
+ const allocIdx = lView.length;
12348
+ for (let i = 0; i < numSlotsToAlloc; i++) {
12349
+ lView.push(initialValue);
12350
+ tView.blueprint.push(initialValue);
12351
+ tView.data.push(null);
12352
+ }
12353
+ return allocIdx;
12354
+ }
12355
+ /**
12356
+ * Adds LView or LContainer to the end of the current view tree.
12357
+ *
12358
+ * This structure will be used to traverse through nested views to remove listeners
12359
+ * and call onDestroy callbacks.
12360
+ *
12361
+ * @param lView The view where LView or LContainer should be added
12362
+ * @param adjustedHostIndex Index of the view's host node in LView[], adjusted for header
12363
+ * @param lViewOrLContainer The LView or LContainer to add to the view tree
12364
+ * @returns The state passed in
12365
+ */
12366
+ function addToEndOfViewTree(lView, lViewOrLContainer) {
12367
+ // TODO(benlesh/misko): This implementation is incorrect, because it always adds the LContainer
12368
+ // to the end of the queue, which means if the developer retrieves the LContainers from RNodes out
12369
+ // of order, the change detection will run out of order, as the act of retrieving the the
12370
+ // LContainer from the RNode is what adds it to the queue.
12371
+ if (lView[CHILD_HEAD]) {
12372
+ lView[CHILD_TAIL][NEXT] = lViewOrLContainer;
12373
+ }
12374
+ else {
12375
+ lView[CHILD_HEAD] = lViewOrLContainer;
12376
+ }
12377
+ lView[CHILD_TAIL] = lViewOrLContainer;
12378
+ return lViewOrLContainer;
12379
+ }
12380
+
12196
12381
  /**
12197
12382
  * Advances to an element for later binding instructions.
12198
12383
  *
@@ -12254,9 +12439,21 @@ var InputFlags;
12254
12439
  InputFlags[InputFlags["HasDecoratorInputTransform"] = 2] = "HasDecoratorInputTransform";
12255
12440
  })(InputFlags || (InputFlags = {}));
12256
12441
 
12257
- function writeToDirectiveInput(def, instance, publicName, privateName, flags, value) {
12442
+ function writeToDirectiveInput(def, instance, publicName, value) {
12258
12443
  const prevConsumer = setActiveConsumer$1(null);
12259
12444
  try {
12445
+ if (ngDevMode) {
12446
+ if (!def.inputs.hasOwnProperty(publicName)) {
12447
+ throw new Error(`ASSERTION ERROR: Directive ${def.type.name} does not have an input with a public name of "${publicName}"`);
12448
+ }
12449
+ // Usually we resolve the directive instance using `LView[someIndex]` before writing to an
12450
+ // input, however if the read happens to early, the `LView[someIndex]` might actually be a
12451
+ // `NodeInjectorFactory`. Check for this specific case here since it can break in subtle ways.
12452
+ if (isFactory(instance)) {
12453
+ throw new Error(`ASSERTION ERROR: Cannot write input to factory for type ${def.type.name}. Directive has not been created yet.`);
12454
+ }
12455
+ }
12456
+ const [privateName, flags, transform] = def.inputs[publicName];
12260
12457
  // If we know we are dealing with a signal input, we cache its reference
12261
12458
  // in a tree-shakable way. The input signal node can then be used for
12262
12459
  // value transform execution or actual value updates without introducing
@@ -12271,9 +12468,9 @@ function writeToDirectiveInput(def, instance, publicName, privateName, flags, va
12271
12468
  if (inputSignalNode !== null && inputSignalNode.transformFn !== undefined) {
12272
12469
  value = inputSignalNode.transformFn(value);
12273
12470
  }
12274
- // If there is a decorator input transform, run it.
12275
- if ((flags & InputFlags.HasDecoratorInputTransform) !== 0) {
12276
- value = def.inputTransforms[privateName].call(instance, value);
12471
+ else if (transform !== null) {
12472
+ // If there is a decorator input transform, run it.
12473
+ value = transform.call(instance, value);
12277
12474
  }
12278
12475
  if (def.setInput !== null) {
12279
12476
  def.setInput(instance, inputSignalNode, value, publicName, privateName);
@@ -12287,39 +12484,6 @@ function writeToDirectiveInput(def, instance, publicName, privateName, flags, va
12287
12484
  }
12288
12485
  }
12289
12486
 
12290
- function createLView(parentLView, tView, context, flags, host, tHostNode, environment, renderer, injector, embeddedViewInjector, hydrationInfo) {
12291
- const lView = tView.blueprint.slice();
12292
- lView[HOST] = host;
12293
- lView[FLAGS] =
12294
- flags |
12295
- 4 /* LViewFlags.CreationMode */ |
12296
- 128 /* LViewFlags.Attached */ |
12297
- 8 /* LViewFlags.FirstLViewPass */ |
12298
- 64 /* LViewFlags.Dirty */ |
12299
- 1024 /* LViewFlags.RefreshView */;
12300
- if (embeddedViewInjector !== null ||
12301
- (parentLView && parentLView[FLAGS] & 2048 /* LViewFlags.HasEmbeddedViewInjector */)) {
12302
- lView[FLAGS] |= 2048 /* LViewFlags.HasEmbeddedViewInjector */;
12303
- }
12304
- resetPreOrderHookFlags(lView);
12305
- ngDevMode && tView.declTNode && parentLView && assertTNodeForLView(tView.declTNode, parentLView);
12306
- lView[PARENT] = lView[DECLARATION_VIEW] = parentLView;
12307
- lView[CONTEXT] = context;
12308
- lView[ENVIRONMENT] = (environment || (parentLView && parentLView[ENVIRONMENT]));
12309
- ngDevMode && assertDefined(lView[ENVIRONMENT], 'LViewEnvironment is required');
12310
- lView[RENDERER] = (renderer || (parentLView && parentLView[RENDERER]));
12311
- ngDevMode && assertDefined(lView[RENDERER], 'Renderer is required');
12312
- lView[INJECTOR] = injector || (parentLView && parentLView[INJECTOR]) || null;
12313
- lView[T_HOST] = tHostNode;
12314
- lView[ID] = getUniqueLViewId();
12315
- lView[HYDRATION] = hydrationInfo;
12316
- lView[EMBEDDED_VIEW_INJECTOR] = embeddedViewInjector;
12317
- ngDevMode &&
12318
- assertEqual(tView.type == 2 /* TViewType.Embedded */ ? parentLView !== null : true, true, 'Embedded views must have parentLView');
12319
- lView[DECLARATION_COMPONENT_VIEW] =
12320
- tView.type == 2 /* TViewType.Embedded */ ? parentLView[DECLARATION_COMPONENT_VIEW] : lView;
12321
- return lView;
12322
- }
12323
12487
  function executeTemplate(tView, lView, templateFn, rf, context) {
12324
12488
  const prevSelectedIndex = getSelectedIndex();
12325
12489
  const isUpdatePhase = rf & 2 /* RenderFlags.Update */;
@@ -12379,95 +12543,6 @@ function saveResolvedLocalsInData(viewData, tNode, localRefExtractor = getNative
12379
12543
  }
12380
12544
  }
12381
12545
  }
12382
- /**
12383
- * Gets TView from a template function or creates a new TView
12384
- * if it doesn't already exist.
12385
- *
12386
- * @param def ComponentDef
12387
- * @returns TView
12388
- */
12389
- function getOrCreateComponentTView(def) {
12390
- const tView = def.tView;
12391
- // Create a TView if there isn't one, or recreate it if the first create pass didn't
12392
- // complete successfully since we can't know for sure whether it's in a usable shape.
12393
- if (tView === null || tView.incompleteFirstPass) {
12394
- // Declaration node here is null since this function is called when we dynamically create a
12395
- // component and hence there is no declaration.
12396
- const declTNode = null;
12397
- return (def.tView = createTView(1 /* TViewType.Component */, declTNode, def.template, def.decls, def.vars, def.directiveDefs, def.pipeDefs, def.viewQuery, def.schemas, def.consts, def.id));
12398
- }
12399
- return tView;
12400
- }
12401
- /**
12402
- * Creates a TView instance
12403
- *
12404
- * @param type Type of `TView`.
12405
- * @param declTNode Declaration location of this `TView`.
12406
- * @param templateFn Template function
12407
- * @param decls The number of nodes, local refs, and pipes in this template
12408
- * @param directives Registry of directives for this view
12409
- * @param pipes Registry of pipes for this view
12410
- * @param viewQuery View queries for this view
12411
- * @param schemas Schemas for this view
12412
- * @param consts Constants for this view
12413
- */
12414
- function createTView(type, declTNode, templateFn, decls, vars, directives, pipes, viewQuery, schemas, constsOrFactory, ssrId) {
12415
- ngDevMode && ngDevMode.tView++;
12416
- const bindingStartIndex = HEADER_OFFSET + decls;
12417
- // This length does not yet contain host bindings from child directives because at this point,
12418
- // we don't know which directives are active on this template. As soon as a directive is matched
12419
- // that has a host binding, we will update the blueprint with that def's hostVars count.
12420
- const initialViewLength = bindingStartIndex + vars;
12421
- const blueprint = createViewBlueprint(bindingStartIndex, initialViewLength);
12422
- const consts = typeof constsOrFactory === 'function' ? constsOrFactory() : constsOrFactory;
12423
- const tView = (blueprint[TVIEW] = {
12424
- type: type,
12425
- blueprint: blueprint,
12426
- template: templateFn,
12427
- queries: null,
12428
- viewQuery: viewQuery,
12429
- declTNode: declTNode,
12430
- data: blueprint.slice().fill(null, bindingStartIndex),
12431
- bindingStartIndex: bindingStartIndex,
12432
- expandoStartIndex: initialViewLength,
12433
- hostBindingOpCodes: null,
12434
- firstCreatePass: true,
12435
- firstUpdatePass: true,
12436
- staticViewQueries: false,
12437
- staticContentQueries: false,
12438
- preOrderHooks: null,
12439
- preOrderCheckHooks: null,
12440
- contentHooks: null,
12441
- contentCheckHooks: null,
12442
- viewHooks: null,
12443
- viewCheckHooks: null,
12444
- destroyHooks: null,
12445
- cleanup: null,
12446
- contentQueries: null,
12447
- components: null,
12448
- directiveRegistry: typeof directives === 'function' ? directives() : directives,
12449
- pipeRegistry: typeof pipes === 'function' ? pipes() : pipes,
12450
- firstChild: null,
12451
- schemas: schemas,
12452
- consts: consts,
12453
- incompleteFirstPass: false,
12454
- ssrId,
12455
- });
12456
- if (ngDevMode) {
12457
- // For performance reasons it is important that the tView retains the same shape during runtime.
12458
- // (To make sure that all of the code is monomorphic.) For this reason we seal the object to
12459
- // prevent class transitions.
12460
- Object.seal(tView);
12461
- }
12462
- return tView;
12463
- }
12464
- function createViewBlueprint(bindingStartIndex, initialViewLength) {
12465
- const blueprint = [];
12466
- for (let i = 0; i < initialViewLength; i++) {
12467
- blueprint.push(i < bindingStartIndex ? null : NO_CHANGE);
12468
- }
12469
- return blueprint;
12470
- }
12471
12546
  /**
12472
12547
  * Locates the host native element, used for bootstrapping existing nodes into rendering pipeline.
12473
12548
  *
@@ -12559,7 +12634,6 @@ function mapPropName(name) {
12559
12634
  }
12560
12635
  function elementPropertyInternal(tView, tNode, lView, propName, value, renderer, sanitizer, nativeOnly) {
12561
12636
  ngDevMode && assertNotSame(value, NO_CHANGE, 'Incoming value should never be NO_CHANGE.');
12562
- const element = getNativeByTNode(tNode, lView);
12563
12637
  let inputData = tNode.inputs;
12564
12638
  let dataValue;
12565
12639
  if (!nativeOnly && inputData != null && (dataValue = inputData[propName])) {
@@ -12567,10 +12641,11 @@ function elementPropertyInternal(tView, tNode, lView, propName, value, renderer,
12567
12641
  if (isComponentHost(tNode))
12568
12642
  markDirtyIfOnPush(lView, tNode.index);
12569
12643
  if (ngDevMode) {
12570
- setNgReflectProperties(lView, element, tNode.type, dataValue, value);
12644
+ setNgReflectProperties(lView, tView, tNode, dataValue, value);
12571
12645
  }
12572
12646
  }
12573
12647
  else if (tNode.type & 3 /* TNodeType.AnyRNode */) {
12648
+ const element = getNativeByTNode(tNode, lView);
12574
12649
  propName = mapPropName(propName);
12575
12650
  if (ngDevMode) {
12576
12651
  validateAgainstEventProperties(propName);
@@ -12600,11 +12675,12 @@ function markDirtyIfOnPush(lView, viewIndex) {
12600
12675
  childComponentLView[FLAGS] |= 64 /* LViewFlags.Dirty */;
12601
12676
  }
12602
12677
  }
12603
- function setNgReflectProperty(lView, element, type, attrName, value) {
12678
+ function setNgReflectProperty(lView, tNode, attrName, value) {
12679
+ const element = getNativeByTNode(tNode, lView);
12604
12680
  const renderer = lView[RENDERER];
12605
12681
  attrName = normalizeDebugBindingName(attrName);
12606
12682
  const debugValue = normalizeDebugBindingValue(value);
12607
- if (type & 3 /* TNodeType.AnyRNode */) {
12683
+ if (tNode.type & 3 /* TNodeType.AnyRNode */) {
12608
12684
  if (value == null) {
12609
12685
  renderer.removeAttribute(element, attrName);
12610
12686
  }
@@ -12617,18 +12693,14 @@ function setNgReflectProperty(lView, element, type, attrName, value) {
12617
12693
  renderer.setValue(element, textContent);
12618
12694
  }
12619
12695
  }
12620
- function setNgReflectProperties(lView, element, type, dataValue, value) {
12621
- if (type & (3 /* TNodeType.AnyRNode */ | 4 /* TNodeType.Container */)) {
12622
- /**
12623
- * dataValue is an array containing runtime input or output names for the directives:
12624
- * i+0: directive instance index
12625
- * i+1: privateName
12626
- *
12627
- * e.g. [0, 'change', 'change-minified']
12628
- * we want to set the reflected property with the privateName: dataValue[i+1]
12629
- */
12630
- for (let i = 0; i < dataValue.length; i += 3) {
12631
- setNgReflectProperty(lView, element, type, dataValue[i + 1], value);
12696
+ function setNgReflectProperties(lView, tView, tNode, inputConfig, value) {
12697
+ if (tNode.type & (3 /* TNodeType.AnyRNode */ | 4 /* TNodeType.Container */)) {
12698
+ // Note: we set the private name of the input as the reflected property, not the public one.
12699
+ for (let i = 0; i < inputConfig.length; i += 2) {
12700
+ const index = inputConfig[i];
12701
+ const lookupName = inputConfig[i + 1];
12702
+ const def = tView.data[index];
12703
+ setNgReflectProperty(lView, tNode, def.inputs[lookupName][0], value);
12632
12704
  }
12633
12705
  }
12634
12706
  }
@@ -12725,31 +12797,6 @@ function findDirectiveDefMatches(tView, tNode) {
12725
12797
  }
12726
12798
  return matches;
12727
12799
  }
12728
- /**
12729
- * Gets the initial set of LView flags based on the component definition that the LView represents.
12730
- * @param def Component definition from which to determine the flags.
12731
- */
12732
- function getInitialLViewFlagsFromDef(def) {
12733
- let flags = 16 /* LViewFlags.CheckAlways */;
12734
- if (def.signals) {
12735
- flags = 4096 /* LViewFlags.SignalView */;
12736
- }
12737
- else if (def.onPush) {
12738
- flags = 64 /* LViewFlags.Dirty */;
12739
- }
12740
- return flags;
12741
- }
12742
- function createComponentLView(lView, hostTNode, def) {
12743
- const native = getNativeByTNode(hostTNode, lView);
12744
- const tView = getOrCreateComponentTView(def);
12745
- // Only component views should be added to the view tree directly. Embedded views are
12746
- // accessed through their containers because they may be removed / re-added later.
12747
- const rendererFactory = lView[ENVIRONMENT].rendererFactory;
12748
- const componentView = addToEndOfViewTree(lView, createLView(lView, tView, null, getInitialLViewFlagsFromDef(def), native, hostTNode, null, rendererFactory.createRenderer(native, def), null, null, null));
12749
- // Component view will always be created before any injected LContainers,
12750
- // so this is a regular element, wrap it with the component view
12751
- return (lView[hostTNode.index] = componentView);
12752
- }
12753
12800
  function elementAttributeInternal(tNode, lView, name, value, sanitizer, namespace) {
12754
12801
  if (ngDevMode) {
12755
12802
  assertNotSame(value, NO_CHANGE, 'Incoming value should never be NO_CHANGE.');
@@ -12783,75 +12830,16 @@ function setElementAttribute(renderer, element, namespace, tagName, name, value,
12783
12830
  function setInputsFromAttrs(lView, directiveIndex, instance, def, tNode, initialInputData) {
12784
12831
  const initialInputs = initialInputData[directiveIndex];
12785
12832
  if (initialInputs !== null) {
12786
- for (let i = 0; i < initialInputs.length;) {
12787
- const publicName = initialInputs[i++];
12788
- const privateName = initialInputs[i++];
12789
- const flags = initialInputs[i++];
12790
- const value = initialInputs[i++];
12791
- writeToDirectiveInput(def, instance, publicName, privateName, flags, value);
12833
+ for (let i = 0; i < initialInputs.length; i += 2) {
12834
+ const lookupName = initialInputs[i];
12835
+ const value = initialInputs[i + 1];
12836
+ writeToDirectiveInput(def, instance, lookupName, value);
12792
12837
  if (ngDevMode) {
12793
- const nativeElement = getNativeByTNode(tNode, lView);
12794
- setNgReflectProperty(lView, nativeElement, tNode.type, privateName, value);
12838
+ setNgReflectProperty(lView, tNode, def.inputs[lookupName][0], value);
12795
12839
  }
12796
12840
  }
12797
12841
  }
12798
12842
  }
12799
- //////////////////////////
12800
- //// ViewContainer & View
12801
- //////////////////////////
12802
- /**
12803
- * Creates a LContainer, either from a container instruction, or for a ViewContainerRef.
12804
- *
12805
- * @param hostNative The host element for the LContainer
12806
- * @param hostTNode The host TNode for the LContainer
12807
- * @param currentView The parent view of the LContainer
12808
- * @param native The native comment element
12809
- * @param isForViewContainerRef Optional a flag indicating the ViewContainerRef case
12810
- * @returns LContainer
12811
- */
12812
- function createLContainer(hostNative, currentView, native, tNode) {
12813
- ngDevMode && assertLView(currentView);
12814
- const lContainer = [
12815
- hostNative, // host native
12816
- true, // Boolean `true` in this position signifies that this is an `LContainer`
12817
- 0, // flags
12818
- currentView, // parent
12819
- null, // next
12820
- tNode, // t_host
12821
- null, // dehydrated views
12822
- native, // native,
12823
- null, // view refs
12824
- null, // moved views
12825
- ];
12826
- ngDevMode &&
12827
- assertEqual(lContainer.length, CONTAINER_HEADER_OFFSET, 'Should allocate correct number of slots for LContainer header.');
12828
- return lContainer;
12829
- }
12830
- /**
12831
- * Adds LView or LContainer to the end of the current view tree.
12832
- *
12833
- * This structure will be used to traverse through nested views to remove listeners
12834
- * and call onDestroy callbacks.
12835
- *
12836
- * @param lView The view where LView or LContainer should be added
12837
- * @param adjustedHostIndex Index of the view's host node in LView[], adjusted for header
12838
- * @param lViewOrLContainer The LView or LContainer to add to the view tree
12839
- * @returns The state passed in
12840
- */
12841
- function addToEndOfViewTree(lView, lViewOrLContainer) {
12842
- // TODO(benlesh/misko): This implementation is incorrect, because it always adds the LContainer
12843
- // to the end of the queue, which means if the developer retrieves the LContainers from RNodes out
12844
- // of order, the change detection will run out of order, as the act of retrieving the the
12845
- // LContainer from the RNode is what adds it to the queue.
12846
- if (lView[CHILD_HEAD]) {
12847
- lView[CHILD_TAIL][NEXT] = lViewOrLContainer;
12848
- }
12849
- else {
12850
- lView[CHILD_HEAD] = lViewOrLContainer;
12851
- }
12852
- lView[CHILD_TAIL] = lViewOrLContainer;
12853
- return lViewOrLContainer;
12854
- }
12855
12843
  ///////////////////////////////
12856
12844
  //// Bindings & interpolations
12857
12845
  ///////////////////////////////
@@ -12925,14 +12913,13 @@ function handleError(lView, error) {
12925
12913
  * @param value Value to set.
12926
12914
  */
12927
12915
  function setInputsForProperty(tView, lView, inputs, publicName, value) {
12928
- for (let i = 0; i < inputs.length;) {
12929
- const index = inputs[i++];
12930
- const privateName = inputs[i++];
12931
- const flags = inputs[i++];
12932
- const instance = lView[index];
12916
+ for (let i = 0; i < inputs.length; i += 2) {
12917
+ const index = inputs[i];
12933
12918
  ngDevMode && assertIndexInRange(lView, index);
12919
+ const privateName = inputs[i + 1];
12920
+ const instance = lView[index];
12934
12921
  const def = tView.data[index];
12935
- writeToDirectiveInput(def, instance, publicName, privateName, flags, value);
12922
+ writeToDirectiveInput(def, instance, privateName, value);
12936
12923
  }
12937
12924
  }
12938
12925
 
@@ -13052,24 +13039,41 @@ function renderChildComponents(hostLView, components) {
13052
13039
  }
13053
13040
  }
13054
13041
 
13042
+ function createAndRenderEmbeddedLView(declarationLView, templateTNode, context, options) {
13043
+ const prevConsumer = setActiveConsumer$1(null);
13044
+ try {
13045
+ const embeddedTView = templateTNode.tView;
13046
+ ngDevMode && assertDefined(embeddedTView, 'TView must be defined for a template node.');
13047
+ ngDevMode && assertTNodeForLView(templateTNode, declarationLView);
13048
+ // Embedded views follow the change detection strategy of the view they're declared in.
13049
+ const isSignalView = declarationLView[FLAGS] & 4096 /* LViewFlags.SignalView */;
13050
+ const viewFlags = isSignalView ? 4096 /* LViewFlags.SignalView */ : 16 /* LViewFlags.CheckAlways */;
13051
+ const embeddedLView = createLView(declarationLView, embeddedTView, context, viewFlags, null, templateTNode, null, null, options?.injector ?? null, options?.embeddedViewInjector ?? null, options?.dehydratedView ?? null);
13052
+ const declarationLContainer = declarationLView[templateTNode.index];
13053
+ ngDevMode && assertLContainer(declarationLContainer);
13054
+ embeddedLView[DECLARATION_LCONTAINER] = declarationLContainer;
13055
+ const declarationViewLQueries = declarationLView[QUERIES];
13056
+ if (declarationViewLQueries !== null) {
13057
+ embeddedLView[QUERIES] = declarationViewLQueries.createEmbeddedView(embeddedTView);
13058
+ }
13059
+ // execute creation mode of a view
13060
+ renderView(embeddedTView, embeddedLView, context);
13061
+ return embeddedLView;
13062
+ }
13063
+ finally {
13064
+ setActiveConsumer$1(prevConsumer);
13065
+ }
13066
+ }
13055
13067
  /**
13056
- * Flags for renderer-specific style modifiers.
13057
- * @publicApi
13068
+ * Returns whether an elements that belong to a view should be
13069
+ * inserted into the DOM. For client-only cases, DOM elements are
13070
+ * always inserted. For hydration cases, we check whether serialized
13071
+ * info is available for a view and the view is not in a "skip hydration"
13072
+ * block (in which case view contents was re-created, thus needing insertion).
13058
13073
  */
13059
- var RendererStyleFlags2;
13060
- (function (RendererStyleFlags2) {
13061
- // TODO(misko): This needs to be refactored into a separate file so that it can be imported from
13062
- // `node_manipulation.ts` Currently doing the import cause resolution order to change and fails
13063
- // the tests. The work around is to have hard coded value in `node_manipulation.ts` for now.
13064
- /**
13065
- * Marks a style as important.
13066
- */
13067
- RendererStyleFlags2[RendererStyleFlags2["Important"] = 1] = "Important";
13068
- /**
13069
- * Marks a style as using dash case naming (this-is-dash-case).
13070
- */
13071
- RendererStyleFlags2[RendererStyleFlags2["DashCase"] = 2] = "DashCase";
13072
- })(RendererStyleFlags2 || (RendererStyleFlags2 = {}));
13074
+ function shouldAddViewToDom(tNode, dehydratedView) {
13075
+ return (!dehydratedView || dehydratedView.firstChild === null || hasInSkipHydrationBlockFlag(tNode));
13076
+ }
13073
13077
 
13074
13078
  let _icuContainerIterate;
13075
13079
  /**
@@ -13092,6 +13096,25 @@ function ensureIcuContainerVisitorLoaded(loader) {
13092
13096
  }
13093
13097
  }
13094
13098
 
13099
+ /**
13100
+ * Flags for renderer-specific style modifiers.
13101
+ * @publicApi
13102
+ */
13103
+ var RendererStyleFlags2;
13104
+ (function (RendererStyleFlags2) {
13105
+ // TODO(misko): This needs to be refactored into a separate file so that it can be imported from
13106
+ // `node_manipulation.ts` Currently doing the import cause resolution order to change and fails
13107
+ // the tests. The work around is to have hard coded value in `node_manipulation.ts` for now.
13108
+ /**
13109
+ * Marks a style as important.
13110
+ */
13111
+ RendererStyleFlags2[RendererStyleFlags2["Important"] = 1] = "Important";
13112
+ /**
13113
+ * Marks a style as using dash case naming (this-is-dash-case).
13114
+ */
13115
+ RendererStyleFlags2[RendererStyleFlags2["DashCase"] = 2] = "DashCase";
13116
+ })(RendererStyleFlags2 || (RendererStyleFlags2 = {}));
13117
+
13095
13118
  /**
13096
13119
  * Checks whether a TNode is considered detached, i.e. not present in the
13097
13120
  * translated i18n template. We should not attempt hydration for such nodes
@@ -13246,83 +13269,6 @@ function destroyViewTree(rootView) {
13246
13269
  lViewOrLContainer = next;
13247
13270
  }
13248
13271
  }
13249
- /**
13250
- * Inserts a view into a container.
13251
- *
13252
- * This adds the view to the container's array of active views in the correct
13253
- * position. It also adds the view's elements to the DOM if the container isn't a
13254
- * root node of another view (in that case, the view's elements will be added when
13255
- * the container's parent view is added later).
13256
- *
13257
- * @param tView The `TView' of the `LView` to insert
13258
- * @param lView The view to insert
13259
- * @param lContainer The container into which the view should be inserted
13260
- * @param index Which index in the container to insert the child view into
13261
- */
13262
- function insertView(tView, lView, lContainer, index) {
13263
- ngDevMode && assertLView(lView);
13264
- ngDevMode && assertLContainer(lContainer);
13265
- const indexInContainer = CONTAINER_HEADER_OFFSET + index;
13266
- const containerLength = lContainer.length;
13267
- if (index > 0) {
13268
- // This is a new view, we need to add it to the children.
13269
- lContainer[indexInContainer - 1][NEXT] = lView;
13270
- }
13271
- if (index < containerLength - CONTAINER_HEADER_OFFSET) {
13272
- lView[NEXT] = lContainer[indexInContainer];
13273
- addToArray(lContainer, CONTAINER_HEADER_OFFSET + index, lView);
13274
- }
13275
- else {
13276
- lContainer.push(lView);
13277
- lView[NEXT] = null;
13278
- }
13279
- lView[PARENT] = lContainer;
13280
- // track views where declaration and insertion points are different
13281
- const declarationLContainer = lView[DECLARATION_LCONTAINER];
13282
- if (declarationLContainer !== null && lContainer !== declarationLContainer) {
13283
- trackMovedView(declarationLContainer, lView);
13284
- }
13285
- // notify query that a new view has been added
13286
- const lQueries = lView[QUERIES];
13287
- if (lQueries !== null) {
13288
- lQueries.insertView(tView);
13289
- }
13290
- updateAncestorTraversalFlagsOnAttach(lView);
13291
- // Sets the attached flag
13292
- lView[FLAGS] |= 128 /* LViewFlags.Attached */;
13293
- }
13294
- /**
13295
- * Track views created from the declaration container (TemplateRef) and inserted into a
13296
- * different LContainer or attached directly to ApplicationRef.
13297
- */
13298
- function trackMovedView(declarationContainer, lView) {
13299
- ngDevMode && assertDefined(lView, 'LView required');
13300
- ngDevMode && assertLContainer(declarationContainer);
13301
- const movedViews = declarationContainer[MOVED_VIEWS];
13302
- const parent = lView[PARENT];
13303
- ngDevMode && assertDefined(parent, 'missing parent');
13304
- if (isLView(parent)) {
13305
- declarationContainer[FLAGS] |= 2 /* LContainerFlags.HasTransplantedViews */;
13306
- }
13307
- else {
13308
- const insertedComponentLView = parent[PARENT][DECLARATION_COMPONENT_VIEW];
13309
- ngDevMode && assertDefined(insertedComponentLView, 'Missing insertedComponentLView');
13310
- const declaredComponentLView = lView[DECLARATION_COMPONENT_VIEW];
13311
- ngDevMode && assertDefined(declaredComponentLView, 'Missing declaredComponentLView');
13312
- if (declaredComponentLView !== insertedComponentLView) {
13313
- // At this point the declaration-component is not same as insertion-component; this means that
13314
- // this is a transplanted view. Mark the declared lView as having transplanted views so that
13315
- // those views can participate in CD.
13316
- declarationContainer[FLAGS] |= 2 /* LContainerFlags.HasTransplantedViews */;
13317
- }
13318
- }
13319
- if (movedViews === null) {
13320
- declarationContainer[MOVED_VIEWS] = [lView];
13321
- }
13322
- else {
13323
- movedViews.push(lView);
13324
- }
13325
- }
13326
13272
  function detachMovedView(declarationContainer, lView) {
13327
13273
  ngDevMode && assertLContainer(declarationContainer);
13328
13274
  ngDevMode &&
@@ -13331,43 +13277,6 @@ function detachMovedView(declarationContainer, lView) {
13331
13277
  const declarationViewIndex = movedViews.indexOf(lView);
13332
13278
  movedViews.splice(declarationViewIndex, 1);
13333
13279
  }
13334
- /**
13335
- * Detaches a view from a container.
13336
- *
13337
- * This method removes the view from the container's array of active views. It also
13338
- * removes the view's elements from the DOM.
13339
- *
13340
- * @param lContainer The container from which to detach a view
13341
- * @param removeIndex The index of the view to detach
13342
- * @returns Detached LView instance.
13343
- */
13344
- function detachView(lContainer, removeIndex) {
13345
- if (lContainer.length <= CONTAINER_HEADER_OFFSET)
13346
- return;
13347
- const indexInContainer = CONTAINER_HEADER_OFFSET + removeIndex;
13348
- const viewToDetach = lContainer[indexInContainer];
13349
- if (viewToDetach) {
13350
- const declarationLContainer = viewToDetach[DECLARATION_LCONTAINER];
13351
- if (declarationLContainer !== null && declarationLContainer !== lContainer) {
13352
- detachMovedView(declarationLContainer, viewToDetach);
13353
- }
13354
- if (removeIndex > 0) {
13355
- lContainer[indexInContainer - 1][NEXT] = viewToDetach[NEXT];
13356
- }
13357
- const removedLView = removeFromArray(lContainer, CONTAINER_HEADER_OFFSET + removeIndex);
13358
- removeViewFromDOM(viewToDetach[TVIEW], viewToDetach);
13359
- // notify query that a view has been removed
13360
- const lQueries = removedLView[QUERIES];
13361
- if (lQueries !== null) {
13362
- lQueries.detachView(removedLView[TVIEW]);
13363
- }
13364
- viewToDetach[PARENT] = null;
13365
- viewToDetach[NEXT] = null;
13366
- // Unsets the attached flag
13367
- viewToDetach[FLAGS] &= ~128 /* LViewFlags.Attached */;
13368
- }
13369
- return viewToDetach;
13370
- }
13371
13280
  /**
13372
13281
  * A standalone function which destroys an LView,
13373
13282
  * conducting clean up (e.g. removing listeners, calling onDestroys).
@@ -13934,80 +13843,6 @@ function applyStyling(renderer, isClassBased, rNode, prop, value) {
13934
13843
  }
13935
13844
  }
13936
13845
 
13937
- function createAndRenderEmbeddedLView(declarationLView, templateTNode, context, options) {
13938
- const prevConsumer = setActiveConsumer$1(null);
13939
- try {
13940
- const embeddedTView = templateTNode.tView;
13941
- ngDevMode && assertDefined(embeddedTView, 'TView must be defined for a template node.');
13942
- ngDevMode && assertTNodeForLView(templateTNode, declarationLView);
13943
- // Embedded views follow the change detection strategy of the view they're declared in.
13944
- const isSignalView = declarationLView[FLAGS] & 4096 /* LViewFlags.SignalView */;
13945
- const viewFlags = isSignalView ? 4096 /* LViewFlags.SignalView */ : 16 /* LViewFlags.CheckAlways */;
13946
- const embeddedLView = createLView(declarationLView, embeddedTView, context, viewFlags, null, templateTNode, null, null, options?.injector ?? null, options?.embeddedViewInjector ?? null, options?.dehydratedView ?? null);
13947
- const declarationLContainer = declarationLView[templateTNode.index];
13948
- ngDevMode && assertLContainer(declarationLContainer);
13949
- embeddedLView[DECLARATION_LCONTAINER] = declarationLContainer;
13950
- const declarationViewLQueries = declarationLView[QUERIES];
13951
- if (declarationViewLQueries !== null) {
13952
- embeddedLView[QUERIES] = declarationViewLQueries.createEmbeddedView(embeddedTView);
13953
- }
13954
- // execute creation mode of a view
13955
- renderView(embeddedTView, embeddedLView, context);
13956
- return embeddedLView;
13957
- }
13958
- finally {
13959
- setActiveConsumer$1(prevConsumer);
13960
- }
13961
- }
13962
- function getLViewFromLContainer(lContainer, index) {
13963
- const adjustedIndex = CONTAINER_HEADER_OFFSET + index;
13964
- // avoid reading past the array boundaries
13965
- if (adjustedIndex < lContainer.length) {
13966
- const lView = lContainer[adjustedIndex];
13967
- ngDevMode && assertLView(lView);
13968
- return lView;
13969
- }
13970
- return undefined;
13971
- }
13972
- /**
13973
- * Returns whether an elements that belong to a view should be
13974
- * inserted into the DOM. For client-only cases, DOM elements are
13975
- * always inserted. For hydration cases, we check whether serialized
13976
- * info is available for a view and the view is not in a "skip hydration"
13977
- * block (in which case view contents was re-created, thus needing insertion).
13978
- */
13979
- function shouldAddViewToDom(tNode, dehydratedView) {
13980
- return (!dehydratedView || dehydratedView.firstChild === null || hasInSkipHydrationBlockFlag(tNode));
13981
- }
13982
- function addLViewToLContainer(lContainer, lView, index, addToDOM = true) {
13983
- const tView = lView[TVIEW];
13984
- // Insert into the view tree so the new view can be change-detected
13985
- insertView(tView, lView, lContainer, index);
13986
- // Insert elements that belong to this view into the DOM tree
13987
- if (addToDOM) {
13988
- const beforeNode = getBeforeNodeForView(index, lContainer);
13989
- const renderer = lView[RENDERER];
13990
- const parentRNode = renderer.parentNode(lContainer[NATIVE]);
13991
- if (parentRNode !== null) {
13992
- addViewToDOM(tView, lContainer[T_HOST], renderer, lView, parentRNode, beforeNode);
13993
- }
13994
- }
13995
- // When in hydration mode, reset the pointer to the first child in
13996
- // the dehydrated view. This indicates that the view was hydrated and
13997
- // further attaching/detaching should work with this view as normal.
13998
- const hydrationInfo = lView[HYDRATION];
13999
- if (hydrationInfo !== null && hydrationInfo.firstChild !== null) {
14000
- hydrationInfo.firstChild = null;
14001
- }
14002
- }
14003
- function removeLViewFromLContainer(lContainer, index) {
14004
- const lView = detachView(lContainer, index);
14005
- if (lView !== undefined) {
14006
- destroyLView(lView[TVIEW], lView);
14007
- }
14008
- return lView;
14009
- }
14010
-
14011
13846
  function collectNativeNodes(tView, lView, tNode, result, isProjection = false) {
14012
13847
  while (tNode !== null) {
14013
13848
  // Let declarations don't have corresponding DOM nodes so we skip over them.
@@ -14629,6 +14464,187 @@ function markViewDirty(lView, source) {
14629
14464
  return null;
14630
14465
  }
14631
14466
 
14467
+ /**
14468
+ * Creates a LContainer, either from a container instruction, or for a ViewContainerRef.
14469
+ *
14470
+ * @param hostNative The host element for the LContainer
14471
+ * @param hostTNode The host TNode for the LContainer
14472
+ * @param currentView The parent view of the LContainer
14473
+ * @param native The native comment element
14474
+ * @param isForViewContainerRef Optional a flag indicating the ViewContainerRef case
14475
+ * @returns LContainer
14476
+ */
14477
+ function createLContainer(hostNative, currentView, native, tNode) {
14478
+ ngDevMode && assertLView(currentView);
14479
+ const lContainer = [
14480
+ hostNative, // host native
14481
+ true, // Boolean `true` in this position signifies that this is an `LContainer`
14482
+ 0, // flags
14483
+ currentView, // parent
14484
+ null, // next
14485
+ tNode, // t_host
14486
+ null, // dehydrated views
14487
+ native, // native,
14488
+ null, // view refs
14489
+ null, // moved views
14490
+ ];
14491
+ ngDevMode &&
14492
+ assertEqual(lContainer.length, CONTAINER_HEADER_OFFSET, 'Should allocate correct number of slots for LContainer header.');
14493
+ return lContainer;
14494
+ }
14495
+ function getLViewFromLContainer(lContainer, index) {
14496
+ const adjustedIndex = CONTAINER_HEADER_OFFSET + index;
14497
+ // avoid reading past the array boundaries
14498
+ if (adjustedIndex < lContainer.length) {
14499
+ const lView = lContainer[adjustedIndex];
14500
+ ngDevMode && assertLView(lView);
14501
+ return lView;
14502
+ }
14503
+ return undefined;
14504
+ }
14505
+ function addLViewToLContainer(lContainer, lView, index, addToDOM = true) {
14506
+ const tView = lView[TVIEW];
14507
+ // Insert into the view tree so the new view can be change-detected
14508
+ insertView(tView, lView, lContainer, index);
14509
+ // Insert elements that belong to this view into the DOM tree
14510
+ if (addToDOM) {
14511
+ const beforeNode = getBeforeNodeForView(index, lContainer);
14512
+ const renderer = lView[RENDERER];
14513
+ const parentRNode = renderer.parentNode(lContainer[NATIVE]);
14514
+ if (parentRNode !== null) {
14515
+ addViewToDOM(tView, lContainer[T_HOST], renderer, lView, parentRNode, beforeNode);
14516
+ }
14517
+ }
14518
+ // When in hydration mode, reset the pointer to the first child in
14519
+ // the dehydrated view. This indicates that the view was hydrated and
14520
+ // further attaching/detaching should work with this view as normal.
14521
+ const hydrationInfo = lView[HYDRATION];
14522
+ if (hydrationInfo !== null && hydrationInfo.firstChild !== null) {
14523
+ hydrationInfo.firstChild = null;
14524
+ }
14525
+ }
14526
+ function removeLViewFromLContainer(lContainer, index) {
14527
+ const lView = detachView(lContainer, index);
14528
+ if (lView !== undefined) {
14529
+ destroyLView(lView[TVIEW], lView);
14530
+ }
14531
+ return lView;
14532
+ }
14533
+ /**
14534
+ * Detaches a view from a container.
14535
+ *
14536
+ * This method removes the view from the container's array of active views. It also
14537
+ * removes the view's elements from the DOM.
14538
+ *
14539
+ * @param lContainer The container from which to detach a view
14540
+ * @param removeIndex The index of the view to detach
14541
+ * @returns Detached LView instance.
14542
+ */
14543
+ function detachView(lContainer, removeIndex) {
14544
+ if (lContainer.length <= CONTAINER_HEADER_OFFSET)
14545
+ return;
14546
+ const indexInContainer = CONTAINER_HEADER_OFFSET + removeIndex;
14547
+ const viewToDetach = lContainer[indexInContainer];
14548
+ if (viewToDetach) {
14549
+ const declarationLContainer = viewToDetach[DECLARATION_LCONTAINER];
14550
+ if (declarationLContainer !== null && declarationLContainer !== lContainer) {
14551
+ detachMovedView(declarationLContainer, viewToDetach);
14552
+ }
14553
+ if (removeIndex > 0) {
14554
+ lContainer[indexInContainer - 1][NEXT] = viewToDetach[NEXT];
14555
+ }
14556
+ const removedLView = removeFromArray(lContainer, CONTAINER_HEADER_OFFSET + removeIndex);
14557
+ removeViewFromDOM(viewToDetach[TVIEW], viewToDetach);
14558
+ // notify query that a view has been removed
14559
+ const lQueries = removedLView[QUERIES];
14560
+ if (lQueries !== null) {
14561
+ lQueries.detachView(removedLView[TVIEW]);
14562
+ }
14563
+ viewToDetach[PARENT] = null;
14564
+ viewToDetach[NEXT] = null;
14565
+ // Unsets the attached flag
14566
+ viewToDetach[FLAGS] &= ~128 /* LViewFlags.Attached */;
14567
+ }
14568
+ return viewToDetach;
14569
+ }
14570
+ /**
14571
+ * Inserts a view into a container.
14572
+ *
14573
+ * This adds the view to the container's array of active views in the correct
14574
+ * position. It also adds the view's elements to the DOM if the container isn't a
14575
+ * root node of another view (in that case, the view's elements will be added when
14576
+ * the container's parent view is added later).
14577
+ *
14578
+ * @param tView The `TView' of the `LView` to insert
14579
+ * @param lView The view to insert
14580
+ * @param lContainer The container into which the view should be inserted
14581
+ * @param index Which index in the container to insert the child view into
14582
+ */
14583
+ function insertView(tView, lView, lContainer, index) {
14584
+ ngDevMode && assertLView(lView);
14585
+ ngDevMode && assertLContainer(lContainer);
14586
+ const indexInContainer = CONTAINER_HEADER_OFFSET + index;
14587
+ const containerLength = lContainer.length;
14588
+ if (index > 0) {
14589
+ // This is a new view, we need to add it to the children.
14590
+ lContainer[indexInContainer - 1][NEXT] = lView;
14591
+ }
14592
+ if (index < containerLength - CONTAINER_HEADER_OFFSET) {
14593
+ lView[NEXT] = lContainer[indexInContainer];
14594
+ addToArray(lContainer, CONTAINER_HEADER_OFFSET + index, lView);
14595
+ }
14596
+ else {
14597
+ lContainer.push(lView);
14598
+ lView[NEXT] = null;
14599
+ }
14600
+ lView[PARENT] = lContainer;
14601
+ // track views where declaration and insertion points are different
14602
+ const declarationLContainer = lView[DECLARATION_LCONTAINER];
14603
+ if (declarationLContainer !== null && lContainer !== declarationLContainer) {
14604
+ trackMovedView(declarationLContainer, lView);
14605
+ }
14606
+ // notify query that a new view has been added
14607
+ const lQueries = lView[QUERIES];
14608
+ if (lQueries !== null) {
14609
+ lQueries.insertView(tView);
14610
+ }
14611
+ updateAncestorTraversalFlagsOnAttach(lView);
14612
+ // Sets the attached flag
14613
+ lView[FLAGS] |= 128 /* LViewFlags.Attached */;
14614
+ }
14615
+ /**
14616
+ * Track views created from the declaration container (TemplateRef) and inserted into a
14617
+ * different LContainer or attached directly to ApplicationRef.
14618
+ */
14619
+ function trackMovedView(declarationContainer, lView) {
14620
+ ngDevMode && assertDefined(lView, 'LView required');
14621
+ ngDevMode && assertLContainer(declarationContainer);
14622
+ const movedViews = declarationContainer[MOVED_VIEWS];
14623
+ const parent = lView[PARENT];
14624
+ ngDevMode && assertDefined(parent, 'missing parent');
14625
+ if (isLView(parent)) {
14626
+ declarationContainer[FLAGS] |= 2 /* LContainerFlags.HasTransplantedViews */;
14627
+ }
14628
+ else {
14629
+ const insertedComponentLView = parent[PARENT][DECLARATION_COMPONENT_VIEW];
14630
+ ngDevMode && assertDefined(insertedComponentLView, 'Missing insertedComponentLView');
14631
+ const declaredComponentLView = lView[DECLARATION_COMPONENT_VIEW];
14632
+ ngDevMode && assertDefined(declaredComponentLView, 'Missing declaredComponentLView');
14633
+ if (declaredComponentLView !== insertedComponentLView) {
14634
+ // At this point the declaration-component is not same as insertion-component; this means that
14635
+ // this is a transplanted view. Mark the declared lView as having transplanted views so that
14636
+ // those views can participate in CD.
14637
+ declarationContainer[FLAGS] |= 2 /* LContainerFlags.HasTransplantedViews */;
14638
+ }
14639
+ }
14640
+ if (movedViews === null) {
14641
+ declarationContainer[MOVED_VIEWS] = [lView];
14642
+ }
14643
+ else {
14644
+ movedViews.push(lView);
14645
+ }
14646
+ }
14647
+
14632
14648
  class ViewRef$1 {
14633
14649
  _lView;
14634
14650
  _cdRefInjectingView;
@@ -17363,34 +17379,6 @@ function ɵɵinvalidFactory() {
17363
17379
  throw new Error(msg);
17364
17380
  }
17365
17381
 
17366
- /**
17367
- * When elements are created dynamically after a view blueprint is created (e.g. through
17368
- * i18nApply()), we need to adjust the blueprint for future template passes.
17369
- *
17370
- * @param tView `TView` associated with `LView`
17371
- * @param lView The `LView` containing the blueprint to adjust
17372
- * @param numSlotsToAlloc The number of slots to alloc in the LView, should be >0
17373
- * @param initialValue Initial value to store in blueprint
17374
- */
17375
- function allocExpando(tView, lView, numSlotsToAlloc, initialValue) {
17376
- if (numSlotsToAlloc === 0)
17377
- return -1;
17378
- if (ngDevMode) {
17379
- assertFirstCreatePass(tView);
17380
- assertSame(tView, lView[TVIEW], '`LView` must be associated with `TView`!');
17381
- assertEqual(tView.data.length, lView.length, 'Expecting LView to be same size as TView');
17382
- assertEqual(tView.data.length, tView.blueprint.length, 'Expecting Blueprint to be same size as TView');
17383
- assertFirstUpdatePass(tView);
17384
- }
17385
- const allocIdx = lView.length;
17386
- for (let i = 0; i < numSlotsToAlloc; i++) {
17387
- lView.push(initialValue);
17388
- tView.blueprint.push(initialValue);
17389
- tView.data.push(null);
17390
- }
17391
- return allocIdx;
17392
- }
17393
-
17394
17382
  /**
17395
17383
  * Resolve the matched directives on a node.
17396
17384
  */
@@ -17573,17 +17561,6 @@ function captureNodeBindings(mode, aliasMap, directiveIndex, bindingsResult, hos
17573
17561
  continue;
17574
17562
  }
17575
17563
  bindingsResult ??= {};
17576
- let internalName;
17577
- let inputFlags = InputFlags.None;
17578
- // For inputs, the value might be an array capturing additional
17579
- // input flags.
17580
- if (Array.isArray(value)) {
17581
- internalName = value[0];
17582
- inputFlags = value[1];
17583
- }
17584
- else {
17585
- internalName = value;
17586
- }
17587
17564
  // If there are no host directive mappings, we want to remap using the alias map from the
17588
17565
  // definition itself. If there is an alias map, it has two functions:
17589
17566
  // 1. It serves as an allowlist of bindings that are exposed by the host directives. Only the
@@ -17600,24 +17577,20 @@ function captureNodeBindings(mode, aliasMap, directiveIndex, bindingsResult, hos
17600
17577
  finalPublicName = hostDirectiveAliasMap[publicName];
17601
17578
  }
17602
17579
  if (mode === 0 /* CaptureNodeBindingMode.Inputs */) {
17603
- addPropertyBinding(bindingsResult, directiveIndex, finalPublicName, internalName, inputFlags);
17580
+ addPropertyBinding(bindingsResult, directiveIndex, finalPublicName, publicName);
17604
17581
  }
17605
17582
  else {
17606
- addPropertyBinding(bindingsResult, directiveIndex, finalPublicName, internalName);
17583
+ addPropertyBinding(bindingsResult, directiveIndex, finalPublicName, value);
17607
17584
  }
17608
17585
  }
17609
17586
  return bindingsResult;
17610
17587
  }
17611
- function addPropertyBinding(bindings, directiveIndex, publicName, internalName, inputFlags) {
17612
- let values;
17588
+ function addPropertyBinding(bindings, directiveIndex, publicName, lookupName) {
17613
17589
  if (bindings.hasOwnProperty(publicName)) {
17614
- (values = bindings[publicName]).push(directiveIndex, internalName);
17590
+ bindings[publicName].push(directiveIndex, lookupName);
17615
17591
  }
17616
17592
  else {
17617
- values = bindings[publicName] = [directiveIndex, internalName];
17618
- }
17619
- if (inputFlags !== undefined) {
17620
- values.push(inputFlags);
17593
+ bindings[publicName] = [directiveIndex, lookupName];
17621
17594
  }
17622
17595
  }
17623
17596
  /**
@@ -17654,15 +17627,14 @@ function generateInitialInputs(inputs, directiveIndex, attrs) {
17654
17627
  if (typeof attrName === 'number')
17655
17628
  break;
17656
17629
  if (inputs.hasOwnProperty(attrName)) {
17657
- if (inputsToStore === null)
17658
- inputsToStore = [];
17659
17630
  // Find the input's public name from the input store. Note that we can be found easier
17660
17631
  // through the directive def, but we want to do it using the inputs store so that it can
17661
17632
  // account for host directive aliases.
17662
17633
  const inputConfig = inputs[attrName];
17663
- for (let j = 0; j < inputConfig.length; j += 3) {
17634
+ for (let j = 0; j < inputConfig.length; j += 2) {
17664
17635
  if (inputConfig[j] === directiveIndex) {
17665
- inputsToStore.push(attrName, inputConfig[j + 1], inputConfig[j + 2], attrs[i + 1]);
17636
+ inputsToStore ??= [];
17637
+ inputsToStore.push(inputConfig[j + 1], attrs[i + 1]);
17666
17638
  // A directive can't have multiple inputs with the same name so we can break here.
17667
17639
  break;
17668
17640
  }
@@ -17831,34 +17803,22 @@ class ComponentFactoryResolver extends ComponentFactoryResolver$1 {
17831
17803
  return new ComponentFactory(componentDef, this.ngModule);
17832
17804
  }
17833
17805
  }
17834
- function toRefArray(map, isInputMap) {
17835
- const array = [];
17836
- for (const publicName in map) {
17837
- if (!map.hasOwnProperty(publicName)) {
17838
- continue;
17839
- }
17840
- const value = map[publicName];
17841
- if (value === undefined) {
17842
- continue;
17843
- }
17844
- const isArray = Array.isArray(value);
17845
- const propName = isArray ? value[0] : value;
17846
- const flags = isArray ? value[1] : InputFlags.None;
17847
- if (isInputMap) {
17848
- array.push({
17849
- propName: propName,
17850
- templateName: publicName,
17851
- isSignal: (flags & InputFlags.SignalBased) !== 0,
17852
- });
17853
- }
17854
- else {
17855
- array.push({
17856
- propName: propName,
17857
- templateName: publicName,
17858
- });
17806
+ function toInputRefArray(map) {
17807
+ return Object.keys(map).map((name) => {
17808
+ const [propName, flags, transform] = map[name];
17809
+ const inputData = {
17810
+ propName: propName,
17811
+ templateName: name,
17812
+ isSignal: (flags & InputFlags.SignalBased) !== 0,
17813
+ };
17814
+ if (transform) {
17815
+ inputData.transform = transform;
17859
17816
  }
17860
- }
17861
- return array;
17817
+ return inputData;
17818
+ });
17819
+ }
17820
+ function toOutputRefArray(map) {
17821
+ return Object.keys(map).map((name) => ({ propName: map[name], templateName: name }));
17862
17822
  }
17863
17823
  function verifyNotAnOrphanComponent(componentDef) {
17864
17824
  // TODO(pk): create assert that verifies ngDevMode
@@ -17917,20 +17877,10 @@ class ComponentFactory extends ComponentFactory$1 {
17917
17877
  ngContentSelectors;
17918
17878
  isBoundToModule;
17919
17879
  get inputs() {
17920
- const componentDef = this.componentDef;
17921
- const inputTransforms = componentDef.inputTransforms;
17922
- const refArray = toRefArray(componentDef.inputs, true);
17923
- if (inputTransforms !== null) {
17924
- for (const input of refArray) {
17925
- if (inputTransforms.hasOwnProperty(input.propName)) {
17926
- input.transform = inputTransforms[input.propName];
17927
- }
17928
- }
17929
- }
17930
- return refArray;
17880
+ return toInputRefArray(this.componentDef.inputs);
17931
17881
  }
17932
17882
  get outputs() {
17933
- return toRefArray(this.componentDef.outputs, false);
17883
+ return toOutputRefArray(this.componentDef.outputs);
17934
17884
  }
17935
17885
  /**
17936
17886
  * @param componentDef The component definition.
@@ -17951,7 +17901,7 @@ class ComponentFactory extends ComponentFactory$1 {
17951
17901
  const cmpDef = this.componentDef;
17952
17902
  ngDevMode && verifyNotAnOrphanComponent(cmpDef);
17953
17903
  const tAttributes = rootSelectorOrNode
17954
- ? ['ng-version', '19.1.5']
17904
+ ? ['ng-version', '19.1.7']
17955
17905
  : // Extract attributes and classes from the first selector only to match VE behavior.
17956
17906
  extractAttrsAndClassesFromSelector(this.componentDef.selectors[0]);
17957
17907
  // Create the root view. Uses empty TView and ContentTemplate.
@@ -19823,7 +19773,74 @@ function ɵɵdefineNgModule(def) {
19823
19773
  return res;
19824
19774
  });
19825
19775
  }
19826
- function parseAndConvertBindingsForDefinition(obj, declaredInputs) {
19776
+ /**
19777
+ * Converts binding objects from the `DirectiveDefinition` into more efficient
19778
+ * lookup dictionaries that are optimized for the framework runtime.
19779
+ *
19780
+ * This function converts inputs or output directive information into new objects
19781
+ * where the public name conveniently maps to the minified internal field name.
19782
+ *
19783
+ * For inputs, the input flags are additionally persisted into the new data structure,
19784
+ * so that those can be quickly retrieved when needed.
19785
+ *
19786
+ * e.g. for
19787
+ *
19788
+ * ```ts
19789
+ * class Comp {
19790
+ * @Input()
19791
+ * propName1: string;
19792
+ *
19793
+ * @Input('publicName2')
19794
+ * declaredPropName2: number;
19795
+ *
19796
+ * inputSignal = input(3);
19797
+ * }
19798
+ * ```
19799
+ *
19800
+ * will be serialized as
19801
+ *
19802
+ * ```ts
19803
+ * {
19804
+ * propName1: 'propName1',
19805
+ * declaredPropName2: ['publicName2', 'declaredPropName2'],
19806
+ * inputSignal: [InputFlags.SignalBased, 'inputSignal'],
19807
+ * }
19808
+ * ```
19809
+ *
19810
+ * which is than translated by the minifier as:
19811
+ *
19812
+ * ```ts
19813
+ * {
19814
+ * minifiedPropName1: 'propName1',
19815
+ * minifiedPropName2: ['publicName2', 'declaredPropName2'],
19816
+ * minifiedInputSignal: [InputFlags.SignalBased, 'inputSignal'],
19817
+ * }
19818
+ * ```
19819
+ *
19820
+ * becomes: (public name => minifiedName + isSignal if needed)
19821
+ *
19822
+ * ```ts
19823
+ * {
19824
+ * 'propName1': 'minifiedPropName1',
19825
+ * 'publicName2': 'minifiedPropName2',
19826
+ * 'inputSignal': ['minifiedInputSignal', InputFlags.SignalBased],
19827
+ * }
19828
+ * ```
19829
+ *
19830
+ * Optionally the function can take `declaredInputs` which will result
19831
+ * in: (public name => declared name)
19832
+ *
19833
+ * ```ts
19834
+ * {
19835
+ * 'propName1': 'propName1',
19836
+ * 'publicName2': 'declaredPropName2',
19837
+ * 'inputSignal': 'inputSignal',
19838
+ * }
19839
+ * ```
19840
+ *
19841
+
19842
+ */
19843
+ function parseAndConvertInputsForDefinition(obj, declaredInputs) {
19827
19844
  if (obj == null)
19828
19845
  return EMPTY_OBJ;
19829
19846
  const newLookup = {};
@@ -19832,26 +19849,33 @@ function parseAndConvertBindingsForDefinition(obj, declaredInputs) {
19832
19849
  const value = obj[minifiedKey];
19833
19850
  let publicName;
19834
19851
  let declaredName;
19835
- let inputFlags = InputFlags.None;
19852
+ let inputFlags;
19853
+ let transform;
19836
19854
  if (Array.isArray(value)) {
19837
19855
  inputFlags = value[0];
19838
19856
  publicName = value[1];
19839
19857
  declaredName = value[2] ?? publicName; // declared name might not be set to save bytes.
19858
+ transform = value[3] || null;
19840
19859
  }
19841
19860
  else {
19842
19861
  publicName = value;
19843
19862
  declaredName = value;
19863
+ inputFlags = InputFlags.None;
19864
+ transform = null;
19844
19865
  }
19845
- // For inputs, capture the declared name, or if some flags are set.
19846
- if (declaredInputs) {
19847
- // Perf note: An array is only allocated for the input if there are flags.
19848
- newLookup[publicName] =
19849
- inputFlags !== InputFlags.None ? [minifiedKey, inputFlags] : minifiedKey;
19850
- declaredInputs[publicName] = declaredName;
19851
- }
19852
- else {
19853
- newLookup[publicName] = minifiedKey;
19854
- }
19866
+ newLookup[publicName] = [minifiedKey, inputFlags, transform];
19867
+ declaredInputs[publicName] = declaredName;
19868
+ }
19869
+ }
19870
+ return newLookup;
19871
+ }
19872
+ function parseAndConvertOutputsForDefinition(obj) {
19873
+ if (obj == null)
19874
+ return EMPTY_OBJ;
19875
+ const newLookup = {};
19876
+ for (const minifiedKey in obj) {
19877
+ if (obj.hasOwnProperty(minifiedKey)) {
19878
+ newLookup[obj[minifiedKey]] = minifiedKey;
19855
19879
  }
19856
19880
  }
19857
19881
  return newLookup;
@@ -19916,7 +19940,6 @@ function getNgDirectiveDef(directiveDefinition) {
19916
19940
  hostAttrs: directiveDefinition.hostAttrs || null,
19917
19941
  contentQueries: directiveDefinition.contentQueries || null,
19918
19942
  declaredInputs: declaredInputs,
19919
- inputTransforms: null,
19920
19943
  inputConfig: directiveDefinition.inputs || EMPTY_OBJ,
19921
19944
  exportAs: directiveDefinition.exportAs || null,
19922
19945
  standalone: directiveDefinition.standalone ?? true,
@@ -19927,8 +19950,8 @@ function getNgDirectiveDef(directiveDefinition) {
19927
19950
  setInput: null,
19928
19951
  findHostDirectiveDefs: null,
19929
19952
  hostDirectives: null,
19930
- inputs: parseAndConvertBindingsForDefinition(directiveDefinition.inputs, declaredInputs),
19931
- outputs: parseAndConvertBindingsForDefinition(directiveDefinition.outputs),
19953
+ inputs: parseAndConvertInputsForDefinition(directiveDefinition.inputs, declaredInputs),
19954
+ outputs: parseAndConvertOutputsForDefinition(directiveDefinition.outputs),
19932
19955
  debugInfo: null,
19933
19956
  };
19934
19957
  }
@@ -20057,7 +20080,6 @@ function ɵɵInheritDefinitionFeature(definition) {
20057
20080
  // would've justified object creation. Unwrap them if necessary.
20058
20081
  const writeableDef = definition;
20059
20082
  writeableDef.inputs = maybeUnwrapEmpty(definition.inputs);
20060
- writeableDef.inputTransforms = maybeUnwrapEmpty(definition.inputTransforms);
20061
20083
  writeableDef.declaredInputs = maybeUnwrapEmpty(definition.declaredInputs);
20062
20084
  writeableDef.outputs = maybeUnwrapEmpty(definition.outputs);
20063
20085
  // Merge hostBindings
@@ -20114,23 +20136,9 @@ function mergeInputsWithTransforms(target, source) {
20114
20136
  continue;
20115
20137
  }
20116
20138
  const value = source.inputs[key];
20117
- if (value === undefined) {
20118
- continue;
20119
- }
20120
- target.inputs[key] = value;
20121
- target.declaredInputs[key] = source.declaredInputs[key];
20122
- // If the input is inherited, and we have a transform for it, we also inherit it.
20123
- // Note that transforms should not be inherited if the input has its own metadata
20124
- // in the `source` directive itself already (i.e. the input is re-declared/overridden).
20125
- if (source.inputTransforms !== null) {
20126
- // Note: transforms are stored with their minified names.
20127
- // Perf: only access the minified name when there are source transforms.
20128
- const minifiedName = Array.isArray(value) ? value[0] : value;
20129
- if (!source.inputTransforms.hasOwnProperty(minifiedName)) {
20130
- continue;
20131
- }
20132
- target.inputTransforms ??= {};
20133
- target.inputTransforms[minifiedName] = source.inputTransforms[minifiedName];
20139
+ if (value !== undefined) {
20140
+ target.inputs[key] = value;
20141
+ target.declaredInputs[key] = source.declaredInputs[key];
20134
20142
  }
20135
20143
  }
20136
20144
  }
@@ -20444,30 +20452,6 @@ function validateMappings(bindingType, def, hostDirectiveBindings) {
20444
20452
  }
20445
20453
  }
20446
20454
 
20447
- /**
20448
- * Decorates the directive definition with support for input transform functions.
20449
- *
20450
- * If the directive uses inheritance, the feature should be included before the
20451
- * `InheritDefinitionFeature` to ensure that the `inputTransforms` field is populated.
20452
- *
20453
- * @codeGenApi
20454
- */
20455
- function ɵɵInputTransformsFeature(definition) {
20456
- const inputs = definition.inputConfig;
20457
- const inputTransforms = {};
20458
- for (const minifiedKey in inputs) {
20459
- if (inputs.hasOwnProperty(minifiedKey)) {
20460
- // Note: the private names are used for the keys, rather than the public ones, because public
20461
- // names can be re-aliased in host directives which would invalidate the lookup.
20462
- const value = inputs[minifiedKey];
20463
- if (Array.isArray(value) && value[3]) {
20464
- inputTransforms[minifiedKey] = value[3];
20465
- }
20466
- }
20467
- }
20468
- definition.inputTransforms = inputTransforms;
20469
- }
20470
-
20471
20455
  function isIterable(obj) {
20472
20456
  return obj !== null && typeof obj === 'object' && obj[Symbol.iterator] !== undefined;
20473
20457
  }
@@ -33305,9 +33289,13 @@ function ɵsetClassDebugInfo(type, debugInfo) {
33305
33289
  * @param applyMetadata Callback that will apply a new set of metadata on the `type` when invoked.
33306
33290
  * @param environment Syntehtic namespace imports that need to be passed along to the callback.
33307
33291
  * @param locals Local symbols from the source location that have to be exposed to the callback.
33292
+ * @param importMeta `import.meta` from the call site of the replacement function. Optional since
33293
+ * it isn't used internally.
33294
+ * @param id ID to the class being replaced. **Not** the same as the component definition ID.
33295
+ * Optional since the ID might not be available internally.
33308
33296
  * @codeGenApi
33309
33297
  */
33310
- function ɵɵreplaceMetadata(type, applyMetadata, namespaces, locals) {
33298
+ function ɵɵreplaceMetadata(type, applyMetadata, namespaces, locals, importMeta = null, id = null) {
33311
33299
  ngDevMode && assertComponentDef(type);
33312
33300
  const currentDef = getComponentDef(type);
33313
33301
  // The reason `applyMetadata` is a callback that is invoked (almost) immediately is because
@@ -33329,7 +33317,7 @@ function ɵɵreplaceMetadata(type, applyMetadata, namespaces, locals) {
33329
33317
  // Note: we have the additional check, because `IsRoot` can also indicate
33330
33318
  // a component created through something like `createComponent`.
33331
33319
  if (isRootView(root) && root[PARENT] === null) {
33332
- recreateMatchingLViews(newDef, oldDef, root);
33320
+ recreateMatchingLViews(importMeta, id, newDef, oldDef, root);
33333
33321
  }
33334
33322
  }
33335
33323
  }
@@ -33365,10 +33353,12 @@ function mergeWithExistingDefinition(currentDef, newDef) {
33365
33353
  }
33366
33354
  /**
33367
33355
  * Finds all LViews matching a specific component definition and recreates them.
33356
+ * @param importMeta `import.meta` information.
33357
+ * @param id HMR ID of the component.
33368
33358
  * @param oldDef Component definition to search for.
33369
33359
  * @param rootLView View from which to start the search.
33370
33360
  */
33371
- function recreateMatchingLViews(newDef, oldDef, rootLView) {
33361
+ function recreateMatchingLViews(importMeta, id, newDef, oldDef, rootLView) {
33372
33362
  ngDevMode &&
33373
33363
  assertDefined(oldDef.tView, 'Expected a component definition that has been instantiated at least once');
33374
33364
  const tView = rootLView[TVIEW];
@@ -33376,7 +33366,7 @@ function recreateMatchingLViews(newDef, oldDef, rootLView) {
33376
33366
  // produce false positives when using inheritance.
33377
33367
  if (tView === oldDef.tView) {
33378
33368
  ngDevMode && assertComponentDef(oldDef.type);
33379
- recreateLView(newDef, oldDef, rootLView);
33369
+ recreateLView(importMeta, id, newDef, oldDef, rootLView);
33380
33370
  return;
33381
33371
  }
33382
33372
  for (let i = HEADER_OFFSET; i < tView.bindingStartIndex; i++) {
@@ -33384,14 +33374,14 @@ function recreateMatchingLViews(newDef, oldDef, rootLView) {
33384
33374
  if (isLContainer(current)) {
33385
33375
  // The host can be an LView if a component is injecting `ViewContainerRef`.
33386
33376
  if (isLView(current[HOST])) {
33387
- recreateMatchingLViews(newDef, oldDef, current[HOST]);
33377
+ recreateMatchingLViews(importMeta, id, newDef, oldDef, current[HOST]);
33388
33378
  }
33389
33379
  for (let j = CONTAINER_HEADER_OFFSET; j < current.length; j++) {
33390
- recreateMatchingLViews(newDef, oldDef, current[j]);
33380
+ recreateMatchingLViews(importMeta, id, newDef, oldDef, current[j]);
33391
33381
  }
33392
33382
  }
33393
33383
  else if (isLView(current)) {
33394
- recreateMatchingLViews(newDef, oldDef, current);
33384
+ recreateMatchingLViews(importMeta, id, newDef, oldDef, current);
33395
33385
  }
33396
33386
  }
33397
33387
  }
@@ -33410,11 +33400,13 @@ function clearRendererCache(factory, def) {
33410
33400
  }
33411
33401
  /**
33412
33402
  * Recreates an LView in-place from a new component definition.
33403
+ * @param importMeta `import.meta` information.
33404
+ * @param id HMR ID for the component.
33413
33405
  * @param newDef Definition from which to recreate the view.
33414
33406
  * @param oldDef Previous component definition being swapped out.
33415
33407
  * @param lView View to be recreated.
33416
33408
  */
33417
- function recreateLView(newDef, oldDef, lView) {
33409
+ function recreateLView(importMeta, id, newDef, oldDef, lView) {
33418
33410
  const instance = lView[CONTEXT];
33419
33411
  let host = lView[HOST];
33420
33412
  // In theory the parent can also be an LContainer, but it appears like that's
@@ -33466,10 +33458,29 @@ function recreateLView(newDef, oldDef, lView) {
33466
33458
  };
33467
33459
  // The callback isn't guaranteed to be inside the Zone so we need to bring it in ourselves.
33468
33460
  if (zone === null) {
33469
- recreate();
33461
+ executeWithInvalidateFallback(importMeta, id, recreate);
33470
33462
  }
33471
33463
  else {
33472
- zone.run(recreate);
33464
+ zone.run(() => executeWithInvalidateFallback(importMeta, id, recreate));
33465
+ }
33466
+ }
33467
+ /**
33468
+ * Runs an HMR-related function and falls back to
33469
+ * invalidating the HMR data if it throws an error.
33470
+ */
33471
+ function executeWithInvalidateFallback(importMeta, id, callback) {
33472
+ try {
33473
+ callback();
33474
+ }
33475
+ catch (e) {
33476
+ const errorMessage = e.message;
33477
+ // If we have all the necessary information and APIs to send off the invalidation
33478
+ // request, send it before rethrowing so the dev server can decide what to do.
33479
+ if (id !== null && errorMessage) {
33480
+ importMeta?.hot?.send?.('angular:invalidate', { id, message: errorMessage, error: true });
33481
+ }
33482
+ // Throw the error in case the page doesn't get refreshed.
33483
+ throw e;
33473
33484
  }
33474
33485
  }
33475
33486
  /**
@@ -33558,7 +33569,6 @@ const angularCoreEnv = (() => ({
33558
33569
  'ɵɵProvidersFeature': ɵɵProvidersFeature,
33559
33570
  'ɵɵCopyDefinitionFeature': ɵɵCopyDefinitionFeature,
33560
33571
  'ɵɵInheritDefinitionFeature': ɵɵInheritDefinitionFeature,
33561
- 'ɵɵInputTransformsFeature': ɵɵInputTransformsFeature,
33562
33572
  'ɵɵExternalStylesFeature': ɵɵExternalStylesFeature,
33563
33573
  'ɵɵnextContext': ɵɵnextContext,
33564
33574
  'ɵɵnamespaceHTML': ɵɵnamespaceHTML,
@@ -34897,7 +34907,7 @@ class Version {
34897
34907
  /**
34898
34908
  * @publicApi
34899
34909
  */
34900
- const VERSION = new Version('19.1.5');
34910
+ const VERSION = new Version('19.1.7');
34901
34911
 
34902
34912
  /**
34903
34913
  * Combination of NgModuleFactory and ComponentFactories.
@@ -41574,5 +41584,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
41574
41584
  * Generated bundle index. Do not edit.
41575
41585
  */
41576
41586
 
41577
- export { ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, AfterRenderPhase, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory$1 as ComponentFactory, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, DestroyRef, Directive, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, HOST_TAG_NAME, Host, HostAttributeToken, HostBinding, HostListener, INJECTOR$1 as INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, OutputEmitterRef, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, PendingTasks, Pipe, PlatformRef, Query, QueryList, REQUEST, REQUEST_CONTEXT, RESPONSE_INIT, Renderer2, RendererFactory2, RendererStyleFlags2, ResourceStatus, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation, ViewRef, afterNextRender, afterRender, afterRenderEffect, asNativeElements, assertInInjectionContext, assertNotInReactiveContext, assertPlatform, booleanAttribute, computed, contentChild, contentChildren, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, input, isDevMode, isSignal, isStandalone, linkedSignal, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, model, numberAttribute, output, platformCore, provideAppInitializer, provideEnvironmentInitializer, provideExperimentalCheckNoChangesForDebug, provideExperimentalZonelessChangeDetection, providePlatformInitializer, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, resource, runInInjectionContext, setTestabilityGetter, signal, untracked, viewChild, viewChildren, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, AfterRenderManager as ɵAfterRenderManager, CONTAINER_HEADER_OFFSET as ɵCONTAINER_HEADER_OFFSET, ChangeDetectionScheduler as ɵChangeDetectionScheduler, ChangeDetectionSchedulerImpl as ɵChangeDetectionSchedulerImpl, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG as ɵDEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR as ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DeferBlockBehavior as ɵDeferBlockBehavior, DeferBlockState as ɵDeferBlockState, ENABLE_ROOT_COMPONENT_BOOTSTRAP as ɵENABLE_ROOT_COMPONENT_BOOTSTRAP, EffectScheduler as ɵEffectScheduler, IMAGE_CONFIG as ɵIMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS as ɵIMAGE_CONFIG_DEFAULTS, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, ɵINPUT_SIGNAL_BRAND_WRITE_TYPE, INTERNAL_APPLICATION_ERROR_HANDLER as ɵINTERNAL_APPLICATION_ERROR_HANDLER, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, IS_INCREMENTAL_HYDRATION_ENABLED as ɵIS_INCREMENTAL_HYDRATION_ENABLED, JSACTION_EVENT_CONTRACT as ɵJSACTION_EVENT_CONTRACT, LContext as ɵLContext, LocaleDataIndex as ɵLocaleDataIndex, MicrotaskEffectScheduler as ɵMicrotaskEffectScheduler, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, PERFORMANCE_MARK_PREFIX as ɵPERFORMANCE_MARK_PREFIX, PROVIDED_NG_ZONE as ɵPROVIDED_NG_ZONE, PendingTasksInternal as ɵPendingTasksInternal, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, TracingAction as ɵTracingAction, TracingService as ɵTracingService, USE_RUNTIME_DEPS_TRACKER_FOR_JIT as ɵUSE_RUNTIME_DEPS_TRACKER_FOR_JIT, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, ZONELESS_ENABLED as ɵZONELESS_ENABLED, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, annotateForHydration as ɵannotateForHydration, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, depsTracker as ɵdepsTracker, detectChangesInViewIfRequired as ɵdetectChangesInViewIfRequired, devModeEqual as ɵdevModeEqual, disableProfiling as ɵdisableProfiling, enableProfiling as ɵenableProfiling, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn, getClosestComponentName as ɵgetClosestComponentName, getDebugNode as ɵgetDebugNode, getDeferBlocks$1 as ɵgetDeferBlocks, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getOutputDestroyRef as ɵgetOutputDestroyRef, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, internalProvideZoneChangeDetection as ɵinternalProvideZoneChangeDetection, isBoundToModule as ɵisBoundToModule, isComponentDefPendingResolution as ɵisComponentDefPendingResolution, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, microtaskEffect as ɵmicrotaskEffect, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, performanceMarkFeature as ɵperformanceMarkFeature, publishExternalGlobalUtil as ɵpublishExternalGlobalUtil, readHydrationInfo as ɵreadHydrationInfo, registerLocaleData as ɵregisterLocaleData, renderDeferBlockState as ɵrenderDeferBlockState, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, restoreComponentResolutionQueue as ɵrestoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, ɵsetClassDebugInfo, setClassMetadata as ɵsetClassMetadata, setClassMetadataAsync as ɵsetClassMetadataAsync, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setInjectorProfilerContext as ɵsetInjectorProfilerContext, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, startMeasuring as ɵstartMeasuring, stopMeasuring as ɵstopMeasuring, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, triggerResourceLoading as ɵtriggerResourceLoading, truncateMiddle as ɵtruncateMiddle, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵunwrapWritableSignal, withDomHydration as ɵwithDomHydration, withEventReplay as ɵwithEventReplay, withI18nSupport as ɵwithI18nSupport, withIncrementalHydration as ɵwithIncrementalHydration, ɵɵCopyDefinitionFeature, ɵɵExternalStylesFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵInputTransformsFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵattachSourceLocations, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵdeclareLet, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵdeferHydrateNever, ɵɵdeferHydrateOnHover, ɵɵdeferHydrateOnIdle, ɵɵdeferHydrateOnImmediate, ɵɵdeferHydrateOnInteraction, ɵɵdeferHydrateOnTimer, ɵɵdeferHydrateOnViewport, ɵɵdeferHydrateWhen, ɵɵdeferOnHover, ɵɵdeferOnIdle, ɵɵdeferOnImmediate, ɵɵdeferOnInteraction, ɵɵdeferOnTimer, ɵɵdeferOnViewport, ɵɵdeferPrefetchOnHover, ɵɵdeferPrefetchOnIdle, ɵɵdeferPrefetchOnImmediate, ɵɵdeferPrefetchOnInteraction, ɵɵdeferPrefetchOnTimer, ɵɵdeferPrefetchOnViewport, ɵɵdeferPrefetchWhen, ɵɵdeferWhen, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetComponentDepsFactory, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareClassMetadataAsync, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryAdvance, ɵɵqueryRefresh, ɵɵreadContextLet, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵreplaceMetadata, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstoreLet, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateIframeAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
41587
+ export { ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, AfterRenderPhase, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory$1 as ComponentFactory, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, DestroyRef, Directive, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, HOST_TAG_NAME, Host, HostAttributeToken, HostBinding, HostListener, INJECTOR$1 as INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, OutputEmitterRef, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, PendingTasks, Pipe, PlatformRef, Query, QueryList, REQUEST, REQUEST_CONTEXT, RESPONSE_INIT, Renderer2, RendererFactory2, RendererStyleFlags2, ResourceStatus, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation, ViewRef, afterNextRender, afterRender, afterRenderEffect, asNativeElements, assertInInjectionContext, assertNotInReactiveContext, assertPlatform, booleanAttribute, computed, contentChild, contentChildren, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, input, isDevMode, isSignal, isStandalone, linkedSignal, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, model, numberAttribute, output, platformCore, provideAppInitializer, provideEnvironmentInitializer, provideExperimentalCheckNoChangesForDebug, provideExperimentalZonelessChangeDetection, providePlatformInitializer, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, resource, runInInjectionContext, setTestabilityGetter, signal, untracked, viewChild, viewChildren, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, AfterRenderManager as ɵAfterRenderManager, CONTAINER_HEADER_OFFSET as ɵCONTAINER_HEADER_OFFSET, ChangeDetectionScheduler as ɵChangeDetectionScheduler, ChangeDetectionSchedulerImpl as ɵChangeDetectionSchedulerImpl, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG as ɵDEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR as ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DeferBlockBehavior as ɵDeferBlockBehavior, DeferBlockState as ɵDeferBlockState, ENABLE_ROOT_COMPONENT_BOOTSTRAP as ɵENABLE_ROOT_COMPONENT_BOOTSTRAP, EffectScheduler as ɵEffectScheduler, IMAGE_CONFIG as ɵIMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS as ɵIMAGE_CONFIG_DEFAULTS, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, ɵINPUT_SIGNAL_BRAND_WRITE_TYPE, INTERNAL_APPLICATION_ERROR_HANDLER as ɵINTERNAL_APPLICATION_ERROR_HANDLER, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, IS_INCREMENTAL_HYDRATION_ENABLED as ɵIS_INCREMENTAL_HYDRATION_ENABLED, JSACTION_EVENT_CONTRACT as ɵJSACTION_EVENT_CONTRACT, LContext as ɵLContext, LocaleDataIndex as ɵLocaleDataIndex, MicrotaskEffectScheduler as ɵMicrotaskEffectScheduler, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, PERFORMANCE_MARK_PREFIX as ɵPERFORMANCE_MARK_PREFIX, PROVIDED_NG_ZONE as ɵPROVIDED_NG_ZONE, PendingTasksInternal as ɵPendingTasksInternal, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, TracingAction as ɵTracingAction, TracingService as ɵTracingService, USE_RUNTIME_DEPS_TRACKER_FOR_JIT as ɵUSE_RUNTIME_DEPS_TRACKER_FOR_JIT, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, ZONELESS_ENABLED as ɵZONELESS_ENABLED, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, annotateForHydration as ɵannotateForHydration, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, depsTracker as ɵdepsTracker, detectChangesInViewIfRequired as ɵdetectChangesInViewIfRequired, devModeEqual as ɵdevModeEqual, disableProfiling as ɵdisableProfiling, enableProfiling as ɵenableProfiling, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn, getClosestComponentName as ɵgetClosestComponentName, getDebugNode as ɵgetDebugNode, getDeferBlocks$1 as ɵgetDeferBlocks, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getOutputDestroyRef as ɵgetOutputDestroyRef, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, internalProvideZoneChangeDetection as ɵinternalProvideZoneChangeDetection, isBoundToModule as ɵisBoundToModule, isComponentDefPendingResolution as ɵisComponentDefPendingResolution, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, microtaskEffect as ɵmicrotaskEffect, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, performanceMarkFeature as ɵperformanceMarkFeature, publishExternalGlobalUtil as ɵpublishExternalGlobalUtil, readHydrationInfo as ɵreadHydrationInfo, registerLocaleData as ɵregisterLocaleData, renderDeferBlockState as ɵrenderDeferBlockState, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, restoreComponentResolutionQueue as ɵrestoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, ɵsetClassDebugInfo, setClassMetadata as ɵsetClassMetadata, setClassMetadataAsync as ɵsetClassMetadataAsync, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setInjectorProfilerContext as ɵsetInjectorProfilerContext, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, startMeasuring as ɵstartMeasuring, stopMeasuring as ɵstopMeasuring, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, triggerResourceLoading as ɵtriggerResourceLoading, truncateMiddle as ɵtruncateMiddle, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵunwrapWritableSignal, withDomHydration as ɵwithDomHydration, withEventReplay as ɵwithEventReplay, withI18nSupport as ɵwithI18nSupport, withIncrementalHydration as ɵwithIncrementalHydration, ɵɵCopyDefinitionFeature, ɵɵExternalStylesFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵattachSourceLocations, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵdeclareLet, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵdeferHydrateNever, ɵɵdeferHydrateOnHover, ɵɵdeferHydrateOnIdle, ɵɵdeferHydrateOnImmediate, ɵɵdeferHydrateOnInteraction, ɵɵdeferHydrateOnTimer, ɵɵdeferHydrateOnViewport, ɵɵdeferHydrateWhen, ɵɵdeferOnHover, ɵɵdeferOnIdle, ɵɵdeferOnImmediate, ɵɵdeferOnInteraction, ɵɵdeferOnTimer, ɵɵdeferOnViewport, ɵɵdeferPrefetchOnHover, ɵɵdeferPrefetchOnIdle, ɵɵdeferPrefetchOnImmediate, ɵɵdeferPrefetchOnInteraction, ɵɵdeferPrefetchOnTimer, ɵɵdeferPrefetchOnViewport, ɵɵdeferPrefetchWhen, ɵɵdeferWhen, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetComponentDepsFactory, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareClassMetadataAsync, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryAdvance, ɵɵqueryRefresh, ɵɵreadContextLet, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵreplaceMetadata, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstoreLet, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateIframeAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
41578
41588
  //# sourceMappingURL=core.mjs.map