@angular/core 14.0.0-next.1 → 14.0.0-next.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/core.d.ts +93 -90
  2. package/esm2020/src/application_init.mjs +4 -3
  3. package/esm2020/src/application_module.mjs +5 -104
  4. package/esm2020/src/application_ref.mjs +6 -24
  5. package/esm2020/src/application_tokens.mjs +14 -2
  6. package/esm2020/src/change_detection/change_detection.mjs +2 -3
  7. package/esm2020/src/compiler/compiler_facade_interface.mjs +1 -1
  8. package/esm2020/src/core.mjs +2 -2
  9. package/esm2020/src/core_private_export.mjs +2 -1
  10. package/esm2020/src/core_render3_private_export.mjs +2 -1
  11. package/esm2020/src/debug/debug_node.mjs +137 -53
  12. package/esm2020/src/i18n/tokens.mjs +39 -3
  13. package/esm2020/src/linker/compiler.mjs +4 -3
  14. package/esm2020/src/linker/view_container_ref.mjs +24 -6
  15. package/esm2020/src/reflection/reflector.mjs +1 -1
  16. package/esm2020/src/render3/component_ref.mjs +1 -11
  17. package/esm2020/src/render3/context_discovery.mjs +28 -30
  18. package/esm2020/src/render3/instructions/element.mjs +7 -1
  19. package/esm2020/src/render3/instructions/element_container.mjs +7 -1
  20. package/esm2020/src/render3/instructions/lview_debug.mjs +5 -2
  21. package/esm2020/src/render3/instructions/shared.mjs +9 -4
  22. package/esm2020/src/render3/interfaces/context.mjs +35 -2
  23. package/esm2020/src/render3/interfaces/lview_tracking.mjs +30 -0
  24. package/esm2020/src/render3/interfaces/view.mjs +3 -2
  25. package/esm2020/src/render3/jit/directive.mjs +5 -2
  26. package/esm2020/src/render3/jit/pipe.mjs +5 -2
  27. package/esm2020/src/render3/node_manipulation.mjs +4 -1
  28. package/esm2020/src/render3/util/discovery_utils.mjs +33 -22
  29. package/esm2020/src/util/coercion.mjs +12 -0
  30. package/esm2020/src/version.mjs +1 -1
  31. package/esm2020/testing/src/logger.mjs +3 -3
  32. package/esm2020/testing/src/ng_zone_mock.mjs +3 -3
  33. package/fesm2015/core.mjs +392 -249
  34. package/fesm2015/core.mjs.map +1 -1
  35. package/fesm2015/testing.mjs +1 -1
  36. package/fesm2020/core.mjs +392 -242
  37. package/fesm2020/core.mjs.map +1 -1
  38. package/fesm2020/testing.mjs +1 -1
  39. package/package.json +1 -1
  40. package/schematics/migrations/entry-components/util.js +2 -2
  41. package/schematics/utils/import_manager.js +13 -12
  42. package/schematics/utils/typescript/imports.js +6 -5
  43. package/testing/testing.d.ts +1 -1
package/fesm2020/core.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v14.0.0-next.1
2
+ * @license Angular v14.0.0-next.4
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -1172,6 +1172,7 @@ const DECLARATION_COMPONENT_VIEW = 16;
1172
1172
  const DECLARATION_LCONTAINER = 17;
1173
1173
  const PREORDER_HOOK_FLAGS = 18;
1174
1174
  const QUERIES = 19;
1175
+ const ID = 20;
1175
1176
  /**
1176
1177
  * Size of LView's header. Necessary to adjust for it when setting slots.
1177
1178
  *
@@ -1179,7 +1180,7 @@ const QUERIES = 19;
1179
1180
  * instruction index into `LView` index. All other indexes should be in the `LView` index space and
1180
1181
  * there should be no need to refer to `HEADER_OFFSET` anywhere else.
1181
1182
  */
1182
- const HEADER_OFFSET = 20;
1183
+ const HEADER_OFFSET = 21;
1183
1184
  /**
1184
1185
  * Converts `TViewType` into human readable text.
1185
1186
  * Make sure this matches with `TViewType`
@@ -6170,6 +6171,75 @@ function getSanitizer() {
6170
6171
  return lView && lView[SANITIZER];
6171
6172
  }
6172
6173
 
6174
+ /**
6175
+ * @license
6176
+ * Copyright Google LLC All Rights Reserved.
6177
+ *
6178
+ * Use of this source code is governed by an MIT-style license that can be
6179
+ * found in the LICENSE file at https://angular.io/license
6180
+ */
6181
+ // Keeps track of the currently-active LViews.
6182
+ const TRACKED_LVIEWS = new Map();
6183
+ // Used for generating unique IDs for LViews.
6184
+ let uniqueIdCounter = 0;
6185
+ /** Starts tracking an LView and returns a unique ID that can be used for future lookups. */
6186
+ function registerLView(lView) {
6187
+ const id = uniqueIdCounter++;
6188
+ TRACKED_LVIEWS.set(id, lView);
6189
+ return id;
6190
+ }
6191
+ /** Gets an LView by its unique ID. */
6192
+ function getLViewById(id) {
6193
+ ngDevMode && assertNumber(id, 'ID used for LView lookup must be a number');
6194
+ return TRACKED_LVIEWS.get(id) || null;
6195
+ }
6196
+ /** Stops tracking an LView. */
6197
+ function unregisterLView(lView) {
6198
+ ngDevMode && assertNumber(lView[ID], 'Cannot stop tracking an LView that does not have an ID');
6199
+ TRACKED_LVIEWS.delete(lView[ID]);
6200
+ }
6201
+
6202
+ /**
6203
+ * @license
6204
+ * Copyright Google LLC All Rights Reserved.
6205
+ *
6206
+ * Use of this source code is governed by an MIT-style license that can be
6207
+ * found in the LICENSE file at https://angular.io/license
6208
+ */
6209
+ /**
6210
+ * The internal view context which is specific to a given DOM element, directive or
6211
+ * component instance. Each value in here (besides the LView and element node details)
6212
+ * can be present, null or undefined. If undefined then it implies the value has not been
6213
+ * looked up yet, otherwise, if null, then a lookup was executed and nothing was found.
6214
+ *
6215
+ * Each value will get filled when the respective value is examined within the getContext
6216
+ * function. The component, element and each directive instance will share the same instance
6217
+ * of the context.
6218
+ */
6219
+ class LContext {
6220
+ constructor(
6221
+ /**
6222
+ * ID of the component's parent view data.
6223
+ */
6224
+ lViewId,
6225
+ /**
6226
+ * The index instance of the node.
6227
+ */
6228
+ nodeIndex,
6229
+ /**
6230
+ * The instance of the DOM node that is attached to the lNode.
6231
+ */
6232
+ native) {
6233
+ this.lViewId = lViewId;
6234
+ this.nodeIndex = nodeIndex;
6235
+ this.native = native;
6236
+ }
6237
+ /** Component's parent view data. */
6238
+ get lView() {
6239
+ return getLViewById(this.lViewId);
6240
+ }
6241
+ }
6242
+
6173
6243
  /**
6174
6244
  * @license
6175
6245
  * Copyright Google LLC All Rights Reserved.
@@ -6202,7 +6272,7 @@ function getLContext(target) {
6202
6272
  if (mpValue) {
6203
6273
  // only when it's an array is it considered an LView instance
6204
6274
  // ... otherwise it's an already constructed LContext instance
6205
- if (Array.isArray(mpValue)) {
6275
+ if (isLView(mpValue)) {
6206
6276
  const lView = mpValue;
6207
6277
  let nodeIndex;
6208
6278
  let component = undefined;
@@ -6261,13 +6331,7 @@ function getLContext(target) {
6261
6331
  while (parent = parent.parentNode) {
6262
6332
  const parentContext = readPatchedData(parent);
6263
6333
  if (parentContext) {
6264
- let lView;
6265
- if (Array.isArray(parentContext)) {
6266
- lView = parentContext;
6267
- }
6268
- else {
6269
- lView = parentContext.lView;
6270
- }
6334
+ const lView = Array.isArray(parentContext) ? parentContext : parentContext.lView;
6271
6335
  // the edge of the app was also reached here through another means
6272
6336
  // (maybe because the DOM was changed manually).
6273
6337
  if (!lView) {
@@ -6290,14 +6354,7 @@ function getLContext(target) {
6290
6354
  * Creates an empty instance of a `LContext` context
6291
6355
  */
6292
6356
  function createLContext(lView, nodeIndex, native) {
6293
- return {
6294
- lView,
6295
- nodeIndex,
6296
- native,
6297
- component: undefined,
6298
- directives: undefined,
6299
- localRefs: undefined,
6300
- };
6357
+ return new LContext(lView[ID], nodeIndex, native);
6301
6358
  }
6302
6359
  /**
6303
6360
  * Takes a component instance and returns the view for that component.
@@ -6306,21 +6363,24 @@ function createLContext(lView, nodeIndex, native) {
6306
6363
  * @returns The component's view
6307
6364
  */
6308
6365
  function getComponentViewByInstance(componentInstance) {
6309
- let lView = readPatchedData(componentInstance);
6310
- let view;
6311
- if (Array.isArray(lView)) {
6312
- const nodeIndex = findViaComponent(lView, componentInstance);
6313
- view = getComponentLViewByIndex(nodeIndex, lView);
6314
- const context = createLContext(lView, nodeIndex, view[HOST]);
6366
+ let patchedData = readPatchedData(componentInstance);
6367
+ let lView;
6368
+ if (isLView(patchedData)) {
6369
+ const contextLView = patchedData;
6370
+ const nodeIndex = findViaComponent(contextLView, componentInstance);
6371
+ lView = getComponentLViewByIndex(nodeIndex, contextLView);
6372
+ const context = createLContext(contextLView, nodeIndex, lView[HOST]);
6315
6373
  context.component = componentInstance;
6316
6374
  attachPatchData(componentInstance, context);
6317
6375
  attachPatchData(context.native, context);
6318
6376
  }
6319
6377
  else {
6320
- const context = lView;
6321
- view = getComponentLViewByIndex(context.nodeIndex, context.lView);
6378
+ const context = patchedData;
6379
+ const contextLView = context.lView;
6380
+ ngDevMode && assertLView(contextLView);
6381
+ lView = getComponentLViewByIndex(context.nodeIndex, contextLView);
6322
6382
  }
6323
- return view;
6383
+ return lView;
6324
6384
  }
6325
6385
  /**
6326
6386
  * This property will be monkey-patched on elements, components and directives.
@@ -6332,7 +6392,10 @@ const MONKEY_PATCH_KEY_NAME = '__ngContext__';
6332
6392
  */
6333
6393
  function attachPatchData(target, data) {
6334
6394
  ngDevMode && assertDefined(target, 'Target expected');
6335
- target[MONKEY_PATCH_KEY_NAME] = data;
6395
+ // Only attach the ID of the view in order to avoid memory leaks (see #41047). We only do this
6396
+ // for `LView`, because we have control over when an `LView` is created and destroyed, whereas
6397
+ // we can't know when to remove an `LContext`.
6398
+ target[MONKEY_PATCH_KEY_NAME] = isLView(data) ? data[ID] : data;
6336
6399
  }
6337
6400
  /**
6338
6401
  * Returns the monkey-patch value data present on the target (which could be
@@ -6340,12 +6403,13 @@ function attachPatchData(target, data) {
6340
6403
  */
6341
6404
  function readPatchedData(target) {
6342
6405
  ngDevMode && assertDefined(target, 'Target expected');
6343
- return target[MONKEY_PATCH_KEY_NAME] || null;
6406
+ const data = target[MONKEY_PATCH_KEY_NAME];
6407
+ return (typeof data === 'number') ? getLViewById(data) : data || null;
6344
6408
  }
6345
6409
  function readPatchedLView(target) {
6346
6410
  const value = readPatchedData(target);
6347
6411
  if (value) {
6348
- return Array.isArray(value) ? value : value.lView;
6412
+ return isLView(value) ? value : value.lView;
6349
6413
  }
6350
6414
  return null;
6351
6415
  }
@@ -7292,6 +7356,8 @@ function cleanUpView(tView, lView) {
7292
7356
  lQueries.detachView(tView);
7293
7357
  }
7294
7358
  }
7359
+ // Unregister the view once everything else has been cleaned up.
7360
+ unregisterLView(lView);
7295
7361
  }
7296
7362
  }
7297
7363
  /** Removes listeners and unsubscribes from output subscriptions */
@@ -9072,6 +9138,9 @@ class LViewDebug {
9072
9138
  get tHost() {
9073
9139
  return this._raw_lView[T_HOST];
9074
9140
  }
9141
+ get id() {
9142
+ return this._raw_lView[ID];
9143
+ }
9075
9144
  get decls() {
9076
9145
  return toLViewRange(this.tView, this._raw_lView, HEADER_OFFSET, this.tView.bindingStartIndex);
9077
9146
  }
@@ -9316,6 +9385,7 @@ function createLView(parentLView, tView, context, flags, host, tHostNode, render
9316
9385
  lView[SANITIZER] = sanitizer || parentLView && parentLView[SANITIZER] || null;
9317
9386
  lView[INJECTOR$1] = injector || parentLView && parentLView[INJECTOR$1] || null;
9318
9387
  lView[T_HOST] = tHostNode;
9388
+ lView[ID] = registerLView(lView);
9319
9389
  ngDevMode &&
9320
9390
  assertEqual(tView.type == 2 /* Embedded */ ? parentLView !== null : true, true, 'Embedded views must have parentLView');
9321
9391
  lView[DECLARATION_COMPONENT_VIEW] =
@@ -10840,8 +10910,11 @@ function tickRootContext(rootContext) {
10840
10910
  for (let i = 0; i < rootContext.components.length; i++) {
10841
10911
  const rootComponent = rootContext.components[i];
10842
10912
  const lView = readPatchedLView(rootComponent);
10843
- const tView = lView[TVIEW];
10844
- renderComponentOrTemplate(tView, lView, tView.template, rootComponent);
10913
+ // We might not have an `LView` if the component was destroyed.
10914
+ if (lView !== null) {
10915
+ const tView = lView[TVIEW];
10916
+ renderComponentOrTemplate(tView, lView, tView.template, rootComponent);
10917
+ }
10845
10918
  }
10846
10919
  }
10847
10920
  function detectChangesInternal(tView, lView, context) {
@@ -11699,12 +11772,16 @@ Injector.__NG_ELEMENT_ID__ = -1 /* Injector */;
11699
11772
  * @globalApi ng
11700
11773
  */
11701
11774
  function getComponent$1(element) {
11702
- assertDomElement(element);
11775
+ ngDevMode && assertDomElement(element);
11703
11776
  const context = getLContext(element);
11704
11777
  if (context === null)
11705
11778
  return null;
11706
11779
  if (context.component === undefined) {
11707
- context.component = getComponentAtNodeIndex(context.nodeIndex, context.lView);
11780
+ const lView = context.lView;
11781
+ if (lView === null) {
11782
+ return null;
11783
+ }
11784
+ context.component = getComponentAtNodeIndex(context.nodeIndex, lView);
11708
11785
  }
11709
11786
  return context.component;
11710
11787
  }
@@ -11723,7 +11800,8 @@ function getComponent$1(element) {
11723
11800
  function getContext(element) {
11724
11801
  assertDomElement(element);
11725
11802
  const context = getLContext(element);
11726
- return context === null ? null : context.lView[CONTEXT];
11803
+ const lView = context ? context.lView : null;
11804
+ return lView === null ? null : lView[CONTEXT];
11727
11805
  }
11728
11806
  /**
11729
11807
  * Retrieves the component instance whose view contains the DOM element.
@@ -11742,11 +11820,10 @@ function getContext(element) {
11742
11820
  */
11743
11821
  function getOwningComponent(elementOrDir) {
11744
11822
  const context = getLContext(elementOrDir);
11745
- if (context === null)
11823
+ let lView = context ? context.lView : null;
11824
+ if (lView === null)
11746
11825
  return null;
11747
- let lView = context.lView;
11748
11826
  let parent;
11749
- ngDevMode && assertLView(lView);
11750
11827
  while (lView[TVIEW].type === 2 /* Embedded */ && (parent = getLViewParent(lView))) {
11751
11828
  lView = parent;
11752
11829
  }
@@ -11764,7 +11841,8 @@ function getOwningComponent(elementOrDir) {
11764
11841
  * @globalApi ng
11765
11842
  */
11766
11843
  function getRootComponents(elementOrDir) {
11767
- return [...getRootContext(elementOrDir).components];
11844
+ const lView = readPatchedLView(elementOrDir);
11845
+ return lView !== null ? [...getRootContext(lView).components] : [];
11768
11846
  }
11769
11847
  /**
11770
11848
  * Retrieves an `Injector` associated with an element, component or directive instance.
@@ -11778,10 +11856,11 @@ function getRootComponents(elementOrDir) {
11778
11856
  */
11779
11857
  function getInjector(elementOrDir) {
11780
11858
  const context = getLContext(elementOrDir);
11781
- if (context === null)
11859
+ const lView = context ? context.lView : null;
11860
+ if (lView === null)
11782
11861
  return Injector.NULL;
11783
- const tNode = context.lView[TVIEW].data[context.nodeIndex];
11784
- return new NodeInjector(tNode, context.lView);
11862
+ const tNode = lView[TVIEW].data[context.nodeIndex];
11863
+ return new NodeInjector(tNode, lView);
11785
11864
  }
11786
11865
  /**
11787
11866
  * Retrieve a set of injection tokens at a given DOM node.
@@ -11790,9 +11869,9 @@ function getInjector(elementOrDir) {
11790
11869
  */
11791
11870
  function getInjectionTokens(element) {
11792
11871
  const context = getLContext(element);
11793
- if (context === null)
11872
+ const lView = context ? context.lView : null;
11873
+ if (lView === null)
11794
11874
  return [];
11795
- const lView = context.lView;
11796
11875
  const tView = lView[TVIEW];
11797
11876
  const tNode = tView.data[context.nodeIndex];
11798
11877
  const providerTokens = [];
@@ -11842,10 +11921,10 @@ function getDirectives(node) {
11842
11921
  return [];
11843
11922
  }
11844
11923
  const context = getLContext(node);
11845
- if (context === null) {
11924
+ const lView = context ? context.lView : null;
11925
+ if (lView === null) {
11846
11926
  return [];
11847
11927
  }
11848
- const lView = context.lView;
11849
11928
  const tView = lView[TVIEW];
11850
11929
  const nodeIndex = context.nodeIndex;
11851
11930
  if (!tView?.data[nodeIndex]) {
@@ -11905,7 +11984,11 @@ function getLocalRefs(target) {
11905
11984
  if (context === null)
11906
11985
  return {};
11907
11986
  if (context.localRefs === undefined) {
11908
- context.localRefs = discoverLocalRefs(context.lView, context.nodeIndex);
11987
+ const lView = context.lView;
11988
+ if (lView === null) {
11989
+ return {};
11990
+ }
11991
+ context.localRefs = discoverLocalRefs(lView, context.nodeIndex);
11909
11992
  }
11910
11993
  return context.localRefs || {};
11911
11994
  }
@@ -11969,11 +12052,11 @@ function getRenderedText(component) {
11969
12052
  * @globalApi ng
11970
12053
  */
11971
12054
  function getListeners(element) {
11972
- assertDomElement(element);
12055
+ ngDevMode && assertDomElement(element);
11973
12056
  const lContext = getLContext(element);
11974
- if (lContext === null)
12057
+ const lView = lContext === null ? null : lContext.lView;
12058
+ if (lView === null)
11975
12059
  return [];
11976
- const lView = lContext.lView;
11977
12060
  const tView = lView[TVIEW];
11978
12061
  const lCleanup = lView[CLEANUP];
11979
12062
  const tCleanup = tView.cleanup;
@@ -12024,10 +12107,10 @@ function getDebugNode$1(element) {
12024
12107
  throw new Error('Expecting instance of DOM Element');
12025
12108
  }
12026
12109
  const lContext = getLContext(element);
12027
- if (lContext === null) {
12110
+ const lView = lContext ? lContext.lView : null;
12111
+ if (lView === null) {
12028
12112
  return null;
12029
12113
  }
12030
- const lView = lContext.lView;
12031
12114
  const nodeIndex = lContext.nodeIndex;
12032
12115
  if (nodeIndex !== -1) {
12033
12116
  const valueInLView = lView[nodeIndex];
@@ -12052,6 +12135,7 @@ function getComponentLView(target) {
12052
12135
  const lContext = getLContext(target);
12053
12136
  const nodeIndx = lContext.nodeIndex;
12054
12137
  const lView = lContext.lView;
12138
+ ngDevMode && assertLView(lView);
12055
12139
  const componentLView = lView[nodeIndx];
12056
12140
  ngDevMode && assertLView(componentLView);
12057
12141
  return componentLView;
@@ -14506,6 +14590,7 @@ function elementStartFirstCreatePass(index, tView, lView, native, name, attrsInd
14506
14590
  * @param name Name of the DOM Node
14507
14591
  * @param attrsIndex Index of the element's attributes in the `consts` array.
14508
14592
  * @param localRefsIndex Index of the element's local references in the `consts` array.
14593
+ * @returns This function returns itself so that it may be chained.
14509
14594
  *
14510
14595
  * Attributes and localRefs are passed as an array of strings where elements with an even index
14511
14596
  * hold an attribute name and elements with an odd index hold an attribute value, ex.:
@@ -14557,9 +14642,11 @@ function ɵɵelementStart(index, name, attrsIndex, localRefsIndex) {
14557
14642
  if (localRefsIndex !== null) {
14558
14643
  saveResolvedLocalsInData(lView, tNode);
14559
14644
  }
14645
+ return ɵɵelementStart;
14560
14646
  }
14561
14647
  /**
14562
14648
  * Mark the end of the element.
14649
+ * @returns This function returns itself so that it may be chained.
14563
14650
  *
14564
14651
  * @codeGenApi
14565
14652
  */
@@ -14590,6 +14677,7 @@ function ɵɵelementEnd() {
14590
14677
  if (tNode.stylesWithoutHost != null && hasStyleInput(tNode)) {
14591
14678
  setDirectiveInputsWhichShadowsStyling(tView, tNode, getLView(), tNode.stylesWithoutHost, false);
14592
14679
  }
14680
+ return ɵɵelementEnd;
14593
14681
  }
14594
14682
  /**
14595
14683
  * Creates an empty element using {@link elementStart} and {@link elementEnd}
@@ -14598,12 +14686,14 @@ function ɵɵelementEnd() {
14598
14686
  * @param name Name of the DOM Node
14599
14687
  * @param attrsIndex Index of the element's attributes in the `consts` array.
14600
14688
  * @param localRefsIndex Index of the element's local references in the `consts` array.
14689
+ * @returns This function returns itself so that it may be chained.
14601
14690
  *
14602
14691
  * @codeGenApi
14603
14692
  */
14604
14693
  function ɵɵelement(index, name, attrsIndex, localRefsIndex) {
14605
14694
  ɵɵelementStart(index, name, attrsIndex, localRefsIndex);
14606
14695
  ɵɵelementEnd();
14696
+ return ɵɵelement;
14607
14697
  }
14608
14698
  function logUnknownElementError(tView, element, tNode, hasDirectives) {
14609
14699
  const schemas = tView.schemas;
@@ -14672,6 +14762,7 @@ function elementContainerStartFirstCreatePass(index, tView, lView, attrsIndex, l
14672
14762
  * @param index Index of the element in the LView array
14673
14763
  * @param attrsIndex Index of the container attributes in the `consts` array.
14674
14764
  * @param localRefsIndex Index of the container's local references in the `consts` array.
14765
+ * @returns This function returns itself so that it may be chained.
14675
14766
  *
14676
14767
  * Even if this instruction accepts a set of attributes no actual attribute values are propagated to
14677
14768
  * the DOM (as a comment node can't have attributes). Attributes are here only for directive
@@ -14702,9 +14793,11 @@ function ɵɵelementContainerStart(index, attrsIndex, localRefsIndex) {
14702
14793
  if (localRefsIndex != null) {
14703
14794
  saveResolvedLocalsInData(lView, tNode);
14704
14795
  }
14796
+ return ɵɵelementContainerStart;
14705
14797
  }
14706
14798
  /**
14707
14799
  * Mark the end of the <ng-container>.
14800
+ * @returns This function returns itself so that it may be chained.
14708
14801
  *
14709
14802
  * @codeGenApi
14710
14803
  */
@@ -14726,6 +14819,7 @@ function ɵɵelementContainerEnd() {
14726
14819
  tView.queries.elementEnd(currentTNode);
14727
14820
  }
14728
14821
  }
14822
+ return ɵɵelementContainerEnd;
14729
14823
  }
14730
14824
  /**
14731
14825
  * Creates an empty logical container using {@link elementContainerStart}
@@ -14734,12 +14828,14 @@ function ɵɵelementContainerEnd() {
14734
14828
  * @param index Index of the element in the LView array
14735
14829
  * @param attrsIndex Index of the container attributes in the `consts` array.
14736
14830
  * @param localRefsIndex Index of the container's local references in the `consts` array.
14831
+ * @returns This function returns itself so that it may be chained.
14737
14832
  *
14738
14833
  * @codeGenApi
14739
14834
  */
14740
14835
  function ɵɵelementContainer(index, attrsIndex, localRefsIndex) {
14741
14836
  ɵɵelementContainerStart(index, attrsIndex, localRefsIndex);
14742
14837
  ɵɵelementContainerEnd();
14838
+ return ɵɵelementContainer;
14743
14839
  }
14744
14840
 
14745
14841
  /**
@@ -21090,7 +21186,7 @@ class Version {
21090
21186
  /**
21091
21187
  * @publicApi
21092
21188
  */
21093
- const VERSION = new Version('14.0.0-next.1');
21189
+ const VERSION = new Version('14.0.0-next.4');
21094
21190
 
21095
21191
  /**
21096
21192
  * @license
@@ -21495,14 +21591,6 @@ function getNamespace(elementName) {
21495
21591
  const name = elementName.toLowerCase();
21496
21592
  return name === 'svg' ? SVG_NAMESPACE : (name === 'math' ? MATH_ML_NAMESPACE : null);
21497
21593
  }
21498
- /**
21499
- * A change detection scheduler token for {@link RootContext}. This token is the default value used
21500
- * for the default `RootContext` found in the {@link ROOT_CONTEXT} token.
21501
- */
21502
- const SCHEDULER = new InjectionToken('SCHEDULER_TOKEN', {
21503
- providedIn: 'root',
21504
- factory: () => defaultScheduler,
21505
- });
21506
21594
  function createChainedInjector(rootViewInjector, moduleInjector) {
21507
21595
  return {
21508
21596
  get: (token, notFoundValue, flags) => {
@@ -22841,11 +22929,29 @@ const R3ViewContainerRef = class ViewContainerRef extends VE_ViewContainerRef {
22841
22929
  componentFactoryOrType :
22842
22930
  new ComponentFactory(getComponentDef(componentFactoryOrType));
22843
22931
  const contextInjector = injector || this.parentInjector;
22844
- if (!ngModuleRef && componentFactory.ngModule == null && contextInjector) {
22845
- // DO NOT REFACTOR. The code here used to have a `value || undefined` expression
22846
- // which seems to cause internal google apps to fail. This is documented in the
22847
- // following internal bug issue: go/b/142967802
22848
- const result = contextInjector.get(NgModuleRef$1, null);
22932
+ // If an `NgModuleRef` is not provided explicitly, try retrieving it from the DI tree.
22933
+ if (!ngModuleRef && componentFactory.ngModule == null) {
22934
+ // For the `ComponentFactory` case, entering this logic is very unlikely, since we expect that
22935
+ // an instance of a `ComponentFactory`, resolved via `ComponentFactoryResolver` would have an
22936
+ // `ngModule` field. This is possible in some test scenarios and potentially in some JIT-based
22937
+ // use-cases. For the `ComponentFactory` case we preserve backwards-compatibility and try
22938
+ // using a provided injector first, then fall back to the parent injector of this
22939
+ // `ViewContainerRef` instance.
22940
+ //
22941
+ // For the factory-less case, it's critical to establish a connection with the module
22942
+ // injector tree (by retrieving an instance of an `NgModuleRef` and accessing its injector),
22943
+ // so that a component can use DI tokens provided in MgModules. For this reason, we can not
22944
+ // rely on the provided injector, since it might be detached from the DI tree (for example, if
22945
+ // it was created via `Injector.create` without specifying a parent injector, or if an
22946
+ // injector is retrieved from an `NgModuleRef` created via `createNgModuleRef` using an
22947
+ // NgModule outside of a module tree). Instead, we always use `ViewContainerRef`'s parent
22948
+ // injector, which is normally connected to the DI tree, which includes module injector
22949
+ // subtree.
22950
+ const _injector = isComponentFactory ? contextInjector : this.parentInjector;
22951
+ // DO NOT REFACTOR. The code here used to have a `injector.get(NgModuleRef, null) ||
22952
+ // undefined` expression which seems to cause internal google apps to fail. This is documented
22953
+ // in the following internal bug issue: go/b/142967802
22954
+ const result = _injector.get(NgModuleRef$1, null);
22849
22955
  if (result) {
22850
22956
  ngModuleRef = result;
22851
22957
  }
@@ -24362,7 +24468,10 @@ function directiveMetadata(type, metadata) {
24362
24468
  usesInheritance: !extendsDirectlyFromObject(type),
24363
24469
  exportAs: extractExportAs(metadata.exportAs),
24364
24470
  providers: metadata.providers || null,
24365
- viewQueries: extractQueriesMetadata(type, propMetadata, isViewQuery)
24471
+ viewQueries: extractQueriesMetadata(type, propMetadata, isViewQuery),
24472
+ // TODO(alxhub): pass through the standalone flag from the directive metadata once standalone
24473
+ // functionality is fully rolled out.
24474
+ isStandalone: false,
24366
24475
  };
24367
24476
  }
24368
24477
  /**
@@ -24506,7 +24615,10 @@ function getPipeMetadata(type, meta) {
24506
24615
  type: type,
24507
24616
  name: type.name,
24508
24617
  pipeName: meta.name,
24509
- pure: meta.pure !== undefined ? meta.pure : true
24618
+ pure: meta.pure !== undefined ? meta.pure : true,
24619
+ // TODO(alxhub): pass through the standalone flag from the pipe metadata once standalone
24620
+ // functionality is fully rolled out.
24621
+ isStandalone: false,
24510
24622
  };
24511
24623
  }
24512
24624
 
@@ -24808,9 +24920,10 @@ class ApplicationInitStatus {
24808
24920
  }
24809
24921
  }
24810
24922
  ApplicationInitStatus.ɵfac = function ApplicationInitStatus_Factory(t) { return new (t || ApplicationInitStatus)(ɵɵinject(APP_INITIALIZER, 8)); };
24811
- ApplicationInitStatus.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ApplicationInitStatus, factory: ApplicationInitStatus.ɵfac });
24923
+ ApplicationInitStatus.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ApplicationInitStatus, factory: ApplicationInitStatus.ɵfac, providedIn: 'root' });
24812
24924
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ApplicationInitStatus, [{
24813
- type: Injectable
24925
+ type: Injectable,
24926
+ args: [{ providedIn: 'root' }]
24814
24927
  }], function () { return [{ type: undefined, decorators: [{
24815
24928
  type: Inject,
24816
24929
  args: [APP_INITIALIZER]
@@ -24836,7 +24949,10 @@ ApplicationInitStatus.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Appli
24836
24949
  *
24837
24950
  * @publicApi
24838
24951
  */
24839
- const APP_ID = new InjectionToken('AppId');
24952
+ const APP_ID = new InjectionToken('AppId', {
24953
+ providedIn: 'root',
24954
+ factory: _appIdRandomProviderFactory,
24955
+ });
24840
24956
  function _appIdRandomProviderFactory() {
24841
24957
  return `${_randomChar()}${_randomChar()}${_randomChar()}`;
24842
24958
  }
@@ -24879,6 +24995,15 @@ const APP_BOOTSTRAP_LISTENER = new InjectionToken('appBootstrapListener');
24879
24995
  * @publicApi
24880
24996
  */
24881
24997
  const PACKAGE_ROOT_URL = new InjectionToken('Application Packages Root URL');
24998
+ // We keep this token here, rather than the animations package, so that modules that only care
24999
+ // about which animations module is loaded (e.g. the CDK) can retrieve it without having to
25000
+ // include extra dependencies. See #44970 for more context.
25001
+ /**
25002
+ * A [DI token](guide/glossary#di-token "DI token definition") that indicates which animations
25003
+ * module has been loaded.
25004
+ * @publicApi
25005
+ */
25006
+ const ANIMATION_MODULE_TYPE = new InjectionToken('AnimationModuleType');
24882
25007
 
24883
25008
  /**
24884
25009
  * @license
@@ -24911,6 +25036,33 @@ Console.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Console, factory: C
24911
25036
  * Use of this source code is governed by an MIT-style license that can be
24912
25037
  * found in the LICENSE file at https://angular.io/license
24913
25038
  */
25039
+ /**
25040
+ * Work out the locale from the potential global properties.
25041
+ *
25042
+ * * Closure Compiler: use `goog.getLocale()`.
25043
+ * * Ivy enabled: use `$localize.locale`
25044
+ */
25045
+ function getGlobalLocale() {
25046
+ if (typeof ngI18nClosureMode !== 'undefined' && ngI18nClosureMode &&
25047
+ typeof goog !== 'undefined' && goog.getLocale() !== 'en') {
25048
+ // * The default `goog.getLocale()` value is `en`, while Angular used `en-US`.
25049
+ // * In order to preserve backwards compatibility, we use Angular default value over
25050
+ // Closure Compiler's one.
25051
+ return goog.getLocale();
25052
+ }
25053
+ else {
25054
+ // KEEP `typeof $localize !== 'undefined' && $localize.locale` IN SYNC WITH THE LOCALIZE
25055
+ // COMPILE-TIME INLINER.
25056
+ //
25057
+ // * During compile time inlining of translations the expression will be replaced
25058
+ // with a string literal that is the current locale. Other forms of this expression are not
25059
+ // guaranteed to be replaced.
25060
+ //
25061
+ // * During runtime translation evaluation, the developer is required to set `$localize.locale`
25062
+ // if required, or just to provide their own `LOCALE_ID` provider.
25063
+ return (typeof $localize !== 'undefined' && $localize.locale) || DEFAULT_LOCALE_ID;
25064
+ }
25065
+ }
24914
25066
  /**
24915
25067
  * Provide this token to set the locale of your application.
24916
25068
  * It is used for i18n extraction, by i18n pipes (DatePipe, I18nPluralPipe, CurrencyPipe,
@@ -24933,7 +25085,10 @@ Console.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Console, factory: C
24933
25085
  *
24934
25086
  * @publicApi
24935
25087
  */
24936
- const LOCALE_ID = new InjectionToken('LocaleId');
25088
+ const LOCALE_ID = new InjectionToken('LocaleId', {
25089
+ providedIn: 'root',
25090
+ factory: () => inject(LOCALE_ID, InjectFlags.Optional | InjectFlags.SkipSelf) || getGlobalLocale(),
25091
+ });
24937
25092
  /**
24938
25093
  * Provide this token to set the default currency code your application uses for
24939
25094
  * CurrencyPipe when there is no currency code passed into it. This is only used by
@@ -24972,7 +25127,10 @@ const LOCALE_ID = new InjectionToken('LocaleId');
24972
25127
  *
24973
25128
  * @publicApi
24974
25129
  */
24975
- const DEFAULT_CURRENCY_CODE = new InjectionToken('DefaultCurrencyCode');
25130
+ const DEFAULT_CURRENCY_CODE = new InjectionToken('DefaultCurrencyCode', {
25131
+ providedIn: 'root',
25132
+ factory: () => USD_CURRENCY_CODE,
25133
+ });
24976
25134
  /**
24977
25135
  * Use this token at bootstrap to provide the content of your translation file (`xtb`,
24978
25136
  * `xlf` or `xlf2`) when you want to translate your application in another language.
@@ -25139,9 +25297,10 @@ class Compiler {
25139
25297
  }
25140
25298
  }
25141
25299
  Compiler.ɵfac = function Compiler_Factory(t) { return new (t || Compiler)(); };
25142
- Compiler.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Compiler, factory: Compiler.ɵfac });
25300
+ Compiler.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Compiler, factory: Compiler.ɵfac, providedIn: 'root' });
25143
25301
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Compiler, [{
25144
- type: Injectable
25302
+ type: Injectable,
25303
+ args: [{ providedIn: 'root' }]
25145
25304
  }], null, null); })();
25146
25305
  /**
25147
25306
  * Token to provide CompilerOptions in the platform injector.
@@ -26014,26 +26173,7 @@ class PlatformRef {
26014
26173
  this._destroyed = false;
26015
26174
  }
26016
26175
  /**
26017
- * Creates an instance of an `@NgModule` for the given platform for offline compilation.
26018
- *
26019
- * @usageNotes
26020
- *
26021
- * The following example creates the NgModule for a browser platform.
26022
- *
26023
- * ```typescript
26024
- * my_module.ts:
26025
- *
26026
- * @NgModule({
26027
- * imports: [BrowserModule]
26028
- * })
26029
- * class MyModule {}
26030
- *
26031
- * main.ts:
26032
- * import {MyModuleNgFactory} from './my_module.ngfactory';
26033
- * import {platformBrowser} from '@angular/platform-browser';
26034
- *
26035
- * let moduleRef = platformBrowser().bootstrapModuleFactory(MyModuleNgFactory);
26036
- * ```
26176
+ * Creates an instance of an `@NgModule` for the given platform.
26037
26177
  *
26038
26178
  * @deprecated Passing NgModule factories as the `PlatformRef.bootstrapModuleFactory` function
26039
26179
  * argument is deprecated. Use the `PlatformRef.bootstrapModule` API instead.
@@ -26087,7 +26227,7 @@ class PlatformRef {
26087
26227
  });
26088
26228
  }
26089
26229
  /**
26090
- * Creates an instance of an `@NgModule` for a given platform using the given runtime compiler.
26230
+ * Creates an instance of an `@NgModule` for a given platform.
26091
26231
  *
26092
26232
  * @usageNotes
26093
26233
  * ### Simple Example
@@ -26521,9 +26661,10 @@ class ApplicationRef {
26521
26661
  }
26522
26662
  }
26523
26663
  ApplicationRef.ɵfac = function ApplicationRef_Factory(t) { return new (t || ApplicationRef)(ɵɵinject(NgZone), ɵɵinject(Injector), ɵɵinject(ErrorHandler), ɵɵinject(ComponentFactoryResolver$1), ɵɵinject(ApplicationInitStatus)); };
26524
- ApplicationRef.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ApplicationRef, factory: ApplicationRef.ɵfac });
26664
+ ApplicationRef.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ApplicationRef, factory: ApplicationRef.ɵfac, providedIn: 'root' });
26525
26665
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ApplicationRef, [{
26526
- type: Injectable
26666
+ type: Injectable,
26667
+ args: [{ providedIn: 'root' }]
26527
26668
  }], function () { return [{ type: NgZone }, { type: Injector }, { type: ErrorHandler }, { type: ComponentFactoryResolver$1 }, { type: ApplicationInitStatus }]; }, null); })();
26528
26669
  function remove(list, el) {
26529
26670
  const index = list.indexOf(el);
@@ -26830,8 +26971,6 @@ var ng_module_factory_loader_impl = {};
26830
26971
  * Use of this source code is governed by an MIT-style license that can be
26831
26972
  * found in the LICENSE file at https://angular.io/license
26832
26973
  */
26833
- // TODO(alxhub): recombine the interfaces and implementations here and move the docs back onto the
26834
- // original classes.
26835
26974
  /**
26836
26975
  * @publicApi
26837
26976
  */
@@ -26847,47 +26986,92 @@ class DebugEventListener {
26847
26986
  function asNativeElements(debugEls) {
26848
26987
  return debugEls.map((el) => el.nativeElement);
26849
26988
  }
26850
- class DebugNode__POST_R3__ {
26989
+ /**
26990
+ * @publicApi
26991
+ */
26992
+ class DebugNode {
26851
26993
  constructor(nativeNode) {
26852
26994
  this.nativeNode = nativeNode;
26853
26995
  }
26996
+ /**
26997
+ * The `DebugElement` parent. Will be `null` if this is the root element.
26998
+ */
26854
26999
  get parent() {
26855
27000
  const parent = this.nativeNode.parentNode;
26856
- return parent ? new DebugElement__POST_R3__(parent) : null;
27001
+ return parent ? new DebugElement(parent) : null;
26857
27002
  }
27003
+ /**
27004
+ * The host dependency injector. For example, the root element's component instance injector.
27005
+ */
26858
27006
  get injector() {
26859
27007
  return getInjector(this.nativeNode);
26860
27008
  }
27009
+ /**
27010
+ * The element's own component instance, if it has one.
27011
+ */
26861
27012
  get componentInstance() {
26862
27013
  const nativeElement = this.nativeNode;
26863
27014
  return nativeElement &&
26864
27015
  (getComponent$1(nativeElement) || getOwningComponent(nativeElement));
26865
27016
  }
27017
+ /**
27018
+ * An object that provides parent context for this element. Often an ancestor component instance
27019
+ * that governs this element.
27020
+ *
27021
+ * When an element is repeated within *ngFor, the context is an `NgForOf` whose `$implicit`
27022
+ * property is the value of the row instance value. For example, the `hero` in `*ngFor="let hero
27023
+ * of heroes"`.
27024
+ */
26866
27025
  get context() {
26867
27026
  return getComponent$1(this.nativeNode) || getContext(this.nativeNode);
26868
27027
  }
27028
+ /**
27029
+ * The callbacks attached to the component's @Output properties and/or the element's event
27030
+ * properties.
27031
+ */
26869
27032
  get listeners() {
26870
27033
  return getListeners(this.nativeNode).filter(listener => listener.type === 'dom');
26871
27034
  }
27035
+ /**
27036
+ * Dictionary of objects associated with template local variables (e.g. #foo), keyed by the local
27037
+ * variable name.
27038
+ */
26872
27039
  get references() {
26873
27040
  return getLocalRefs(this.nativeNode);
26874
27041
  }
27042
+ /**
27043
+ * This component's injector lookup tokens. Includes the component itself plus the tokens that the
27044
+ * component lists in its providers metadata.
27045
+ */
26875
27046
  get providerTokens() {
26876
27047
  return getInjectionTokens(this.nativeNode);
26877
27048
  }
26878
27049
  }
26879
- class DebugElement__POST_R3__ extends DebugNode__POST_R3__ {
27050
+ /**
27051
+ * @publicApi
27052
+ *
27053
+ * @see [Component testing scenarios](guide/testing-components-scenarios)
27054
+ * @see [Basics of testing components](guide/testing-components-basics)
27055
+ * @see [Testing utility APIs](guide/testing-utility-apis)
27056
+ */
27057
+ class DebugElement extends DebugNode {
26880
27058
  constructor(nativeNode) {
26881
27059
  ngDevMode && assertDomNode(nativeNode);
26882
27060
  super(nativeNode);
26883
27061
  }
27062
+ /**
27063
+ * The underlying DOM element at the root of the component.
27064
+ */
26884
27065
  get nativeElement() {
26885
27066
  return this.nativeNode.nodeType == Node.ELEMENT_NODE ? this.nativeNode : null;
26886
27067
  }
27068
+ /**
27069
+ * The element tag name, if it is an element.
27070
+ */
26887
27071
  get name() {
26888
27072
  const context = getLContext(this.nativeNode);
26889
- if (context !== null) {
26890
- const lView = context.lView;
27073
+ const lView = context ? context.lView : null;
27074
+ if (lView !== null) {
26891
27075
  const tData = lView[TVIEW].data;
26892
27076
  const tNode = tData[context.nodeIndex];
26893
27077
  return tNode.value;
@@ -26910,10 +27094,10 @@ class DebugElement__POST_R3__ extends DebugNode__POST_R3__ {
26910
27094
  */
26911
27095
  get properties() {
26912
27096
  const context = getLContext(this.nativeNode);
26913
- if (context === null) {
27097
+ const lView = context ? context.lView : null;
27098
+ if (lView === null) {
26914
27099
  return {};
26915
27100
  }
26916
- const lView = context.lView;
26917
27101
  const tData = lView[TVIEW].data;
26918
27102
  const tNode = tData[context.nodeIndex];
26919
27103
  const properties = {};
@@ -26924,6 +27108,9 @@ class DebugElement__POST_R3__ extends DebugNode__POST_R3__ {
26924
27108
  collectPropertyBindings(properties, tNode, lView, tData);
26925
27109
  return properties;
26926
27110
  }
27111
+ /**
27112
+ * A map of attribute names to attribute values for an element.
27113
+ */
26927
27114
  get attributes() {
26928
27115
  const attributes = {};
26929
27116
  const element = this.nativeElement;
@@ -26931,10 +27118,10 @@ class DebugElement__POST_R3__ extends DebugNode__POST_R3__ {
26931
27118
  return attributes;
26932
27119
  }
26933
27120
  const context = getLContext(element);
26934
- if (context === null) {
27121
+ const lView = context ? context.lView : null;
27122
+ if (lView === null) {
26935
27123
  return {};
26936
27124
  }
26937
- const lView = context.lView;
26938
27125
  const tNodeAttrs = lView[TVIEW].data[context.nodeIndex].attrs;
26939
27126
  const lowercaseTNodeAttrs = [];
26940
27127
  // For debug nodes we take the element's attribute directly from the DOM since it allows us
@@ -26972,12 +27159,29 @@ class DebugElement__POST_R3__ extends DebugNode__POST_R3__ {
26972
27159
  }
26973
27160
  return attributes;
26974
27161
  }
27162
+ /**
27163
+ * The inline styles of the DOM element.
27164
+ *
27165
+ * Will be `null` if there is no `style` property on the underlying DOM element.
27166
+ *
27167
+ * @see [ElementCSSInlineStyle](https://developer.mozilla.org/en-US/docs/Web/API/ElementCSSInlineStyle/style)
27168
+ */
26975
27169
  get styles() {
26976
27170
  if (this.nativeElement && this.nativeElement.style) {
26977
27171
  return this.nativeElement.style;
26978
27172
  }
26979
27173
  return {};
26980
27174
  }
27175
+ /**
27176
+ * A map containing the class names on the element as keys.
27177
+ *
27178
+ * This map is derived from the `className` property of the DOM element.
27179
+ *
27180
+ * Note: The values of this object will always be `true`. The class key will not appear in the KV
27181
+ * object if it does not exist on the element.
27182
+ *
27183
+ * @see [Element.className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className)
27184
+ */
26981
27185
  get classes() {
26982
27186
  const result = {};
26983
27187
  const element = this.nativeElement;
@@ -26987,15 +27191,23 @@ class DebugElement__POST_R3__ extends DebugNode__POST_R3__ {
26987
27191
  classes.forEach((value) => result[value] = true);
26988
27192
  return result;
26989
27193
  }
27194
+ /**
27195
+ * The `childNodes` of the DOM element as a `DebugNode` array.
27196
+ *
27197
+ * @see [Node.childNodes](https://developer.mozilla.org/en-US/docs/Web/API/Node/childNodes)
27198
+ */
26990
27199
  get childNodes() {
26991
27200
  const childNodes = this.nativeNode.childNodes;
26992
27201
  const children = [];
26993
27202
  for (let i = 0; i < childNodes.length; i++) {
26994
27203
  const element = childNodes[i];
26995
- children.push(getDebugNode__POST_R3__(element));
27204
+ children.push(getDebugNode(element));
26996
27205
  }
26997
27206
  return children;
26998
27207
  }
27208
+ /**
27209
+ * The immediate `DebugElement` children. Walk the tree by descending through `children`.
27210
+ */
26999
27211
  get children() {
27000
27212
  const nativeElement = this.nativeElement;
27001
27213
  if (!nativeElement)
@@ -27004,24 +27216,45 @@ class DebugElement__POST_R3__ extends DebugNode__POST_R3__ {
27004
27216
  const children = [];
27005
27217
  for (let i = 0; i < childNodes.length; i++) {
27006
27218
  const element = childNodes[i];
27007
- children.push(getDebugNode__POST_R3__(element));
27219
+ children.push(getDebugNode(element));
27008
27220
  }
27009
27221
  return children;
27010
27222
  }
27223
+ /**
27224
+ * @returns the first `DebugElement` that matches the predicate at any depth in the subtree.
27225
+ */
27011
27226
  query(predicate) {
27012
27227
  const results = this.queryAll(predicate);
27013
27228
  return results[0] || null;
27014
27229
  }
27230
+ /**
27231
+ * @returns All `DebugElement` matches for the predicate at any depth in the subtree.
27232
+ */
27015
27233
  queryAll(predicate) {
27016
27234
  const matches = [];
27017
- _queryAllR3(this, predicate, matches, true);
27235
+ _queryAll(this, predicate, matches, true);
27018
27236
  return matches;
27019
27237
  }
27238
+ /**
27239
+ * @returns All `DebugNode` matches for the predicate at any depth in the subtree.
27240
+ */
27020
27241
  queryAllNodes(predicate) {
27021
27242
  const matches = [];
27022
- _queryAllR3(this, predicate, matches, false);
27243
+ _queryAll(this, predicate, matches, false);
27023
27244
  return matches;
27024
27245
  }
27246
+ /**
27247
+ * Triggers the event by its name if there is a corresponding listener in the element's
27248
+ * `listeners` collection.
27249
+ *
27250
+ * If the event lacks a listener or there's some other problem, consider
27251
+ * calling `nativeElement.dispatchEvent(eventObject)`.
27252
+ *
27253
+ * @param eventName The name of the event to trigger
27254
+ * @param eventObj The _event object_ expected by the handler
27255
+ *
27256
+ * @see [Testing components scenarios](guide/testing-components-scenarios#trigger-event-handler)
27257
+ */
27025
27258
  triggerEventHandler(eventName, eventObj) {
27026
27259
  const node = this.nativeNode;
27027
27260
  const invokedListeners = [];
@@ -27080,11 +27313,12 @@ function isPrimitiveValue(value) {
27080
27313
  return typeof value === 'string' || typeof value === 'boolean' || typeof value === 'number' ||
27081
27314
  value === null;
27082
27315
  }
27083
- function _queryAllR3(parentElement, predicate, matches, elementsOnly) {
27316
+ function _queryAll(parentElement, predicate, matches, elementsOnly) {
27084
27317
  const context = getLContext(parentElement.nativeNode);
27085
- if (context !== null) {
27086
- const parentTNode = context.lView[TVIEW].data[context.nodeIndex];
27087
- _queryNodeChildrenR3(parentTNode, context.lView, predicate, matches, elementsOnly, parentElement.nativeNode);
27318
+ const lView = context ? context.lView : null;
27319
+ if (lView !== null) {
27320
+ const parentTNode = lView[TVIEW].data[context.nodeIndex];
27321
+ _queryNodeChildren(parentTNode, lView, predicate, matches, elementsOnly, parentElement.nativeNode);
27088
27322
  }
27089
27323
  else {
27090
27324
  // If the context is null, then `parentElement` was either created with Renderer2 or native DOM
@@ -27102,26 +27336,26 @@ function _queryAllR3(parentElement, predicate, matches, elementsOnly) {
27102
27336
  * @param elementsOnly whether only elements should be searched
27103
27337
  * @param rootNativeNode the root native node on which predicate should not be matched
27104
27338
  */
27105
- function _queryNodeChildrenR3(tNode, lView, predicate, matches, elementsOnly, rootNativeNode) {
27339
+ function _queryNodeChildren(tNode, lView, predicate, matches, elementsOnly, rootNativeNode) {
27106
27340
  ngDevMode && assertTNodeForLView(tNode, lView);
27107
27341
  const nativeNode = getNativeByTNodeOrNull(tNode, lView);
27108
27342
  // For each type of TNode, specific logic is executed.
27109
27343
  if (tNode.type & (3 /* AnyRNode */ | 8 /* ElementContainer */)) {
27110
27344
  // Case 1: the TNode is an element
27111
27345
  // The native node has to be checked.
27112
- _addQueryMatchR3(nativeNode, predicate, matches, elementsOnly, rootNativeNode);
27346
+ _addQueryMatch(nativeNode, predicate, matches, elementsOnly, rootNativeNode);
27113
27347
  if (isComponentHost(tNode)) {
27114
27348
  // If the element is the host of a component, then all nodes in its view have to be processed.
27115
27349
  // Note: the component's content (tNode.child) will be processed from the insertion points.
27116
27350
  const componentView = getComponentLViewByIndex(tNode.index, lView);
27117
27351
  if (componentView && componentView[TVIEW].firstChild) {
27118
- _queryNodeChildrenR3(componentView[TVIEW].firstChild, componentView, predicate, matches, elementsOnly, rootNativeNode);
27352
+ _queryNodeChildren(componentView[TVIEW].firstChild, componentView, predicate, matches, elementsOnly, rootNativeNode);
27119
27353
  }
27120
27354
  }
27121
27355
  else {
27122
27356
  if (tNode.child) {
27123
27357
  // Otherwise, its children have to be processed.
27124
- _queryNodeChildrenR3(tNode.child, lView, predicate, matches, elementsOnly, rootNativeNode);
27358
+ _queryNodeChildren(tNode.child, lView, predicate, matches, elementsOnly, rootNativeNode);
27125
27359
  }
27126
27360
  // We also have to query the DOM directly in order to catch elements inserted through
27127
27361
  // Renderer2. Note that this is __not__ optimal, because we're walking similar trees multiple
@@ -27137,16 +27371,16 @@ function _queryNodeChildrenR3(tNode, lView, predicate, matches, elementsOnly, ro
27137
27371
  // processed.
27138
27372
  const nodeOrContainer = lView[tNode.index];
27139
27373
  if (isLContainer(nodeOrContainer)) {
27140
- _queryNodeChildrenInContainerR3(nodeOrContainer, predicate, matches, elementsOnly, rootNativeNode);
27374
+ _queryNodeChildrenInContainer(nodeOrContainer, predicate, matches, elementsOnly, rootNativeNode);
27141
27375
  }
27142
27376
  }
27143
27377
  else if (tNode.type & 4 /* Container */) {
27144
27378
  // Case 2: the TNode is a container
27145
27379
  // The native node has to be checked.
27146
27380
  const lContainer = lView[tNode.index];
27147
- _addQueryMatchR3(lContainer[NATIVE], predicate, matches, elementsOnly, rootNativeNode);
27381
+ _addQueryMatch(lContainer[NATIVE], predicate, matches, elementsOnly, rootNativeNode);
27148
27382
  // Each view inside the container has to be processed.
27149
- _queryNodeChildrenInContainerR3(lContainer, predicate, matches, elementsOnly, rootNativeNode);
27383
+ _queryNodeChildrenInContainer(lContainer, predicate, matches, elementsOnly, rootNativeNode);
27150
27384
  }
27151
27385
  else if (tNode.type & 16 /* Projection */) {
27152
27386
  // Case 3: the TNode is a projection insertion point (i.e. a <ng-content>).
@@ -27156,18 +27390,18 @@ function _queryNodeChildrenR3(tNode, lView, predicate, matches, elementsOnly, ro
27156
27390
  const head = componentHost.projection[tNode.projection];
27157
27391
  if (Array.isArray(head)) {
27158
27392
  for (let nativeNode of head) {
27159
- _addQueryMatchR3(nativeNode, predicate, matches, elementsOnly, rootNativeNode);
27393
+ _addQueryMatch(nativeNode, predicate, matches, elementsOnly, rootNativeNode);
27160
27394
  }
27161
27395
  }
27162
27396
  else if (head) {
27163
27397
  const nextLView = componentView[PARENT];
27164
27398
  const nextTNode = nextLView[TVIEW].data[head.index];
27165
- _queryNodeChildrenR3(nextTNode, nextLView, predicate, matches, elementsOnly, rootNativeNode);
27399
+ _queryNodeChildren(nextTNode, nextLView, predicate, matches, elementsOnly, rootNativeNode);
27166
27400
  }
27167
27401
  }
27168
27402
  else if (tNode.child) {
27169
27403
  // Case 4: the TNode is a view.
27170
- _queryNodeChildrenR3(tNode.child, lView, predicate, matches, elementsOnly, rootNativeNode);
27404
+ _queryNodeChildren(tNode.child, lView, predicate, matches, elementsOnly, rootNativeNode);
27171
27405
  }
27172
27406
  // We don't want to go to the next sibling of the root node.
27173
27407
  if (rootNativeNode !== nativeNode) {
@@ -27175,7 +27409,7 @@ function _queryNodeChildrenR3(tNode, lView, predicate, matches, elementsOnly, ro
27175
27409
  // link, depending on whether the current node has been projected.
27176
27410
  const nextTNode = (tNode.flags & 4 /* isProjected */) ? tNode.projectionNext : tNode.next;
27177
27411
  if (nextTNode) {
27178
- _queryNodeChildrenR3(nextTNode, lView, predicate, matches, elementsOnly, rootNativeNode);
27412
+ _queryNodeChildren(nextTNode, lView, predicate, matches, elementsOnly, rootNativeNode);
27179
27413
  }
27180
27414
  }
27181
27415
  }
@@ -27188,12 +27422,12 @@ function _queryNodeChildrenR3(tNode, lView, predicate, matches, elementsOnly, ro
27188
27422
  * @param elementsOnly whether only elements should be searched
27189
27423
  * @param rootNativeNode the root native node on which predicate should not be matched
27190
27424
  */
27191
- function _queryNodeChildrenInContainerR3(lContainer, predicate, matches, elementsOnly, rootNativeNode) {
27425
+ function _queryNodeChildrenInContainer(lContainer, predicate, matches, elementsOnly, rootNativeNode) {
27192
27426
  for (let i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) {
27193
27427
  const childView = lContainer[i];
27194
27428
  const firstChild = childView[TVIEW].firstChild;
27195
27429
  if (firstChild) {
27196
- _queryNodeChildrenR3(firstChild, childView, predicate, matches, elementsOnly, rootNativeNode);
27430
+ _queryNodeChildren(firstChild, childView, predicate, matches, elementsOnly, rootNativeNode);
27197
27431
  }
27198
27432
  }
27199
27433
  }
@@ -27206,7 +27440,7 @@ function _queryNodeChildrenInContainerR3(lContainer, predicate, matches, element
27206
27440
  * @param elementsOnly whether only elements should be searched
27207
27441
  * @param rootNativeNode the root native node on which predicate should not be matched
27208
27442
  */
27209
- function _addQueryMatchR3(nativeNode, predicate, matches, elementsOnly, rootNativeNode) {
27443
+ function _addQueryMatch(nativeNode, predicate, matches, elementsOnly, rootNativeNode) {
27210
27444
  if (rootNativeNode !== nativeNode) {
27211
27445
  const debugNode = getDebugNode(nativeNode);
27212
27446
  if (!debugNode) {
@@ -27215,7 +27449,7 @@ function _addQueryMatchR3(nativeNode, predicate, matches, elementsOnly, rootNati
27215
27449
  // Type of the "predicate and "matches" array are set based on the value of
27216
27450
  // the "elementsOnly" parameter. TypeScript is not able to properly infer these
27217
27451
  // types with generics, so we manually cast the parameters accordingly.
27218
- if (elementsOnly && debugNode instanceof DebugElement__POST_R3__ && predicate(debugNode) &&
27452
+ if (elementsOnly && (debugNode instanceof DebugElement) && predicate(debugNode) &&
27219
27453
  matches.indexOf(debugNode) === -1) {
27220
27454
  matches.push(debugNode);
27221
27455
  }
@@ -27240,7 +27474,7 @@ function _queryNativeNodeDescendants(parentNode, predicate, matches, elementsOnl
27240
27474
  const node = nodes[i];
27241
27475
  const debugNode = getDebugNode(node);
27242
27476
  if (debugNode) {
27243
- if (elementsOnly && debugNode instanceof DebugElement__POST_R3__ && predicate(debugNode) &&
27477
+ if (elementsOnly && (debugNode instanceof DebugElement) && predicate(debugNode) &&
27244
27478
  matches.indexOf(debugNode) === -1) {
27245
27479
  matches.push(debugNode);
27246
27480
  }
@@ -27281,25 +27515,24 @@ function collectPropertyBindings(properties, tNode, lView, tData) {
27281
27515
  // Need to keep the nodes in a global Map so that multiple angular apps are supported.
27282
27516
  const _nativeNodeToDebugNode = new Map();
27283
27517
  const NG_DEBUG_PROPERTY = '__ng_debug__';
27284
- function getDebugNode__POST_R3__(nativeNode) {
27518
+ /**
27519
+ * @publicApi
27520
+ */
27521
+ function getDebugNode(nativeNode) {
27285
27522
  if (nativeNode instanceof Node) {
27286
27523
  if (!(nativeNode.hasOwnProperty(NG_DEBUG_PROPERTY))) {
27287
27524
  nativeNode[NG_DEBUG_PROPERTY] = nativeNode.nodeType == Node.ELEMENT_NODE ?
27288
- new DebugElement__POST_R3__(nativeNode) :
27289
- new DebugNode__POST_R3__(nativeNode);
27525
+ new DebugElement(nativeNode) :
27526
+ new DebugNode(nativeNode);
27290
27527
  }
27291
27528
  return nativeNode[NG_DEBUG_PROPERTY];
27292
27529
  }
27293
27530
  return null;
27294
27531
  }
27295
- /**
27296
- * @publicApi
27297
- */
27298
- const getDebugNode = getDebugNode__POST_R3__;
27299
- function getDebugNodeR2__POST_R3__(_nativeNode) {
27532
+ // TODO: cleanup all references to this function and remove it.
27533
+ function getDebugNodeR2(_nativeNode) {
27300
27534
  return null;
27301
27535
  }
27302
- const getDebugNodeR2 = getDebugNodeR2__POST_R3__;
27303
27536
  function getAllDebugNodes() {
27304
27537
  return Array.from(_nativeNodeToDebugNode.values());
27305
27538
  }
@@ -27309,14 +27542,6 @@ function indexDebugNode(node) {
27309
27542
  function removeDebugNodeFromIndex(node) {
27310
27543
  _nativeNodeToDebugNode.delete(node.nativeNode);
27311
27544
  }
27312
- /**
27313
- * @publicApi
27314
- */
27315
- const DebugNode = DebugNode__POST_R3__;
27316
- /**
27317
- * @publicApi
27318
- */
27319
- const DebugElement = DebugElement__POST_R3__;
27320
27545
 
27321
27546
  /**
27322
27547
  * @license
@@ -28444,96 +28669,10 @@ const platformCore = createPlatformFactory(null, 'core', _CORE_PLATFORM_PROVIDER
28444
28669
  * Use of this source code is governed by an MIT-style license that can be
28445
28670
  * found in the LICENSE file at https://angular.io/license
28446
28671
  */
28447
- function _iterableDiffersFactory() {
28448
- return defaultIterableDiffers;
28449
- }
28450
- function _keyValueDiffersFactory() {
28451
- return defaultKeyValueDiffers;
28452
- }
28453
- function _localeFactory(locale) {
28454
- return locale || getGlobalLocale();
28455
- }
28456
28672
  /**
28457
- * Work out the locale from the potential global properties.
28458
- *
28459
- * * Closure Compiler: use `goog.getLocale()`.
28460
- * * Ivy enabled: use `$localize.locale`
28461
- */
28462
- function getGlobalLocale() {
28463
- if (typeof ngI18nClosureMode !== 'undefined' && ngI18nClosureMode &&
28464
- typeof goog !== 'undefined' && goog.getLocale() !== 'en') {
28465
- // * The default `goog.getLocale()` value is `en`, while Angular used `en-US`.
28466
- // * In order to preserve backwards compatibility, we use Angular default value over
28467
- // Closure Compiler's one.
28468
- return goog.getLocale();
28469
- }
28470
- else {
28471
- // KEEP `typeof $localize !== 'undefined' && $localize.locale` IN SYNC WITH THE LOCALIZE
28472
- // COMPILE-TIME INLINER.
28473
- //
28474
- // * During compile time inlining of translations the expression will be replaced
28475
- // with a string literal that is the current locale. Other forms of this expression are not
28476
- // guaranteed to be replaced.
28477
- //
28478
- // * During runtime translation evaluation, the developer is required to set `$localize.locale`
28479
- // if required, or just to provide their own `LOCALE_ID` provider.
28480
- return (typeof $localize !== 'undefined' && $localize.locale) || DEFAULT_LOCALE_ID;
28481
- }
28482
- }
28483
- /**
28484
- * A built-in [dependency injection token](guide/glossary#di-token)
28485
- * that is used to configure the root injector for bootstrapping.
28486
- */
28487
- const APPLICATION_MODULE_PROVIDERS = [
28488
- {
28489
- provide: ApplicationRef,
28490
- useClass: ApplicationRef,
28491
- deps: [NgZone, Injector, ErrorHandler, ComponentFactoryResolver$1, ApplicationInitStatus]
28492
- },
28493
- { provide: SCHEDULER, deps: [NgZone], useFactory: zoneSchedulerFactory },
28494
- {
28495
- provide: ApplicationInitStatus,
28496
- useClass: ApplicationInitStatus,
28497
- deps: [[new Optional(), APP_INITIALIZER]]
28498
- },
28499
- { provide: Compiler, useClass: Compiler, deps: [] },
28500
- APP_ID_RANDOM_PROVIDER,
28501
- { provide: IterableDiffers, useFactory: _iterableDiffersFactory, deps: [] },
28502
- { provide: KeyValueDiffers, useFactory: _keyValueDiffersFactory, deps: [] },
28503
- {
28504
- provide: LOCALE_ID,
28505
- useFactory: _localeFactory,
28506
- deps: [[new Inject(LOCALE_ID), new Optional(), new SkipSelf()]]
28507
- },
28508
- { provide: DEFAULT_CURRENCY_CODE, useValue: USD_CURRENCY_CODE },
28509
- ];
28510
- /**
28511
- * Schedule work at next available slot.
28512
- *
28513
- * In Ivy this is just `requestAnimationFrame`. For compatibility reasons when bootstrapped
28514
- * using `platformRef.bootstrap` we need to use `NgZone.onStable` as the scheduling mechanism.
28515
- * This overrides the scheduling mechanism in Ivy to `NgZone.onStable`.
28516
- *
28517
- * @param ngZone NgZone to use for scheduling.
28518
- */
28519
- function zoneSchedulerFactory(ngZone) {
28520
- let queue = [];
28521
- ngZone.onStable.subscribe(() => {
28522
- while (queue.length) {
28523
- queue.pop()();
28524
- }
28525
- });
28526
- return function (fn) {
28527
- queue.push(fn);
28528
- };
28529
- }
28530
- /**
28531
- * Configures the root injector for an app with
28532
- * providers of `@angular/core` dependencies that `ApplicationRef` needs
28533
- * to bootstrap components.
28534
- *
28535
28673
  * Re-exported by `BrowserModule`, which is included automatically in the root
28536
- * `AppModule` when you create a new app with the CLI `new` command.
28674
+ * `AppModule` when you create a new app with the CLI `new` command. Eagerly injects
28675
+ * `ApplicationRef` to instantiate it.
28537
28676
  *
28538
28677
  * @publicApi
28539
28678
  */
@@ -28543,12 +28682,23 @@ class ApplicationModule {
28543
28682
  }
28544
28683
  ApplicationModule.ɵfac = function ApplicationModule_Factory(t) { return new (t || ApplicationModule)(ɵɵinject(ApplicationRef)); };
28545
28684
  ApplicationModule.ɵmod = /*@__PURE__*/ ɵɵdefineNgModule({ type: ApplicationModule });
28546
- ApplicationModule.ɵinj = /*@__PURE__*/ ɵɵdefineInjector({ providers: APPLICATION_MODULE_PROVIDERS });
28685
+ ApplicationModule.ɵinj = /*@__PURE__*/ ɵɵdefineInjector({});
28547
28686
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ApplicationModule, [{
28548
- type: NgModule,
28549
- args: [{ providers: APPLICATION_MODULE_PROVIDERS }]
28687
+ type: NgModule
28550
28688
  }], function () { return [{ type: ApplicationRef }]; }, null); })();
28551
28689
 
28690
+ /**
28691
+ * @license
28692
+ * Copyright Google LLC All Rights Reserved.
28693
+ *
28694
+ * Use of this source code is governed by an MIT-style license that can be
28695
+ * found in the LICENSE file at https://angular.io/license
28696
+ */
28697
+ /** Coerces a value (typically a string) to a boolean. */
28698
+ function coerceToBoolean(value) {
28699
+ return typeof value === 'boolean' ? value : (value != null && value !== 'false');
28700
+ }
28701
+
28552
28702
  /**
28553
28703
  * @license
28554
28704
  * Copyright Google LLC All Rights Reserved.
@@ -28706,5 +28856,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
28706
28856
  * Generated bundle index. Do not edit.
28707
28857
  */
28708
28858
 
28709
- export { ANALYZE_FOR_ENTRY_COMPONENTS, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, 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, Directive, ElementRef, EmbeddedViewRef, ErrorHandler, EventEmitter, Host, HostBinding, HostListener, INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, Pipe, PlatformRef, Query, QueryList, ReflectiveInjector, ReflectiveKey, Renderer2, RendererFactory2, RendererStyleFlags2, ResolvedReflectiveFactory, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation$1 as ViewEncapsulation, ViewRef, asNativeElements, assertPlatform, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, inject, isDevMode, platformCore, resolveForwardRef, setTestabilityGetter, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, APP_ID_RANDOM_PROVIDER as ɵAPP_ID_RANDOM_PROVIDER, ChangeDetectorStatus as ɵChangeDetectorStatus, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, ViewRef$1 as ɵViewRef, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, 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, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, detectChanges as ɵdetectChanges, devModeEqual as ɵdevModeEqual, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, getDebugNode as ɵgetDebugNode, getDebugNodeR2 as ɵgetDebugNodeR2, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getSanitizationBypassType as ɵgetSanitizationBypassType, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, isBoundToModule as ɵisBoundToModule, isDefaultChangeDetectionStrategy as ɵisDefaultChangeDetectionStrategy, isListLikeIterable as ɵisListLikeIterable, isObservable as ɵisObservable, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, ɵivyEnabled, makeDecorator as ɵmakeDecorator, markDirty as ɵmarkDirty, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, publishDefaultGlobalUtils$1 as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, registerLocaleData as ɵregisterLocaleData, registerNgModuleType as ɵregisterNgModuleType, renderComponent as ɵrenderComponent, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, setClassMetadata as ɵsetClassMetadata, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setLocaleId as ɵsetLocaleId, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, whenRendered as ɵwhenRendered, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcontentQuery, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryRefresh, ɵɵreference, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵviewQuery };
28859
+ export { ANALYZE_FOR_ENTRY_COMPONENTS, ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, 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, Directive, ElementRef, EmbeddedViewRef, ErrorHandler, EventEmitter, Host, HostBinding, HostListener, INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, Pipe, PlatformRef, Query, QueryList, ReflectiveInjector, ReflectiveKey, Renderer2, RendererFactory2, RendererStyleFlags2, ResolvedReflectiveFactory, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation$1 as ViewEncapsulation, ViewRef, asNativeElements, assertPlatform, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, inject, isDevMode, platformCore, resolveForwardRef, setTestabilityGetter, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, APP_ID_RANDOM_PROVIDER as ɵAPP_ID_RANDOM_PROVIDER, ChangeDetectorStatus as ɵChangeDetectorStatus, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, ViewRef$1 as ɵViewRef, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, coerceToBoolean as ɵcoerceToBoolean, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, detectChanges as ɵdetectChanges, devModeEqual as ɵdevModeEqual, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, getDebugNode as ɵgetDebugNode, getDebugNodeR2 as ɵgetDebugNodeR2, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getSanitizationBypassType as ɵgetSanitizationBypassType, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, isBoundToModule as ɵisBoundToModule, isDefaultChangeDetectionStrategy as ɵisDefaultChangeDetectionStrategy, isListLikeIterable as ɵisListLikeIterable, isObservable as ɵisObservable, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, ɵivyEnabled, makeDecorator as ɵmakeDecorator, markDirty as ɵmarkDirty, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, publishDefaultGlobalUtils$1 as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, registerLocaleData as ɵregisterLocaleData, registerNgModuleType as ɵregisterNgModuleType, renderComponent as ɵrenderComponent, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, setClassMetadata as ɵsetClassMetadata, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setLocaleId as ɵsetLocaleId, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, whenRendered as ɵwhenRendered, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcontentQuery, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryRefresh, ɵɵreference, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵviewQuery };
28710
28860
  //# sourceMappingURL=core.mjs.map