@angular/core 15.0.0 → 15.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/esm2020/src/core_private_export.mjs +2 -1
  2. package/esm2020/src/error_details_base_url.mjs +6 -2
  3. package/esm2020/src/render/api.mjs +1 -3
  4. package/esm2020/src/render3/assert.mjs +1 -5
  5. package/esm2020/src/render3/component_ref.mjs +1 -12
  6. package/esm2020/src/render3/i18n/i18n_parse.mjs +3 -2
  7. package/esm2020/src/render3/index.mjs +2 -2
  8. package/esm2020/src/render3/instructions/listener.mjs +6 -5
  9. package/esm2020/src/render3/instructions/shared.mjs +87 -162
  10. package/esm2020/src/render3/interfaces/view.mjs +1 -10
  11. package/esm2020/src/render3/node_manipulation.mjs +11 -20
  12. package/esm2020/src/render3/util/discovery_utils.mjs +3 -32
  13. package/esm2020/src/sanitization/bypass.mjs +4 -3
  14. package/esm2020/src/sanitization/html_sanitizer.mjs +3 -2
  15. package/esm2020/src/sanitization/sanitization.mjs +3 -3
  16. package/esm2020/src/sanitization/url_sanitizer.mjs +3 -2
  17. package/esm2020/src/version.mjs +1 -1
  18. package/esm2020/testing/src/logger.mjs +3 -3
  19. package/esm2020/testing/src/ng_zone_mock.mjs +3 -3
  20. package/fesm2015/core.mjs +210 -1050
  21. package/fesm2015/core.mjs.map +1 -1
  22. package/fesm2015/testing.mjs +211 -1051
  23. package/fesm2015/testing.mjs.map +1 -1
  24. package/fesm2020/core.mjs +210 -1050
  25. package/fesm2020/core.mjs.map +1 -1
  26. package/fesm2020/testing.mjs +211 -1051
  27. package/fesm2020/testing.mjs.map +1 -1
  28. package/index.d.ts +8 -223
  29. package/package.json +1 -1
  30. package/testing/index.d.ts +1 -1
  31. package/esm2020/src/render3/instructions/lview_debug.mjs +0 -684
  32. package/esm2020/src/util/named_array_type.mjs +0 -40
package/fesm2020/core.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v15.0.0
2
+ * @license Angular v15.0.2
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -150,11 +150,15 @@ function isEnvironmentProviders(value) {
150
150
  /**
151
151
  * Base URL for the error details page.
152
152
  *
153
- * Keep the files below in full sync:
153
+ * Keep this constant in sync across:
154
154
  * - packages/compiler-cli/src/ngtsc/diagnostics/src/error_details_base_url.ts
155
155
  * - packages/core/src/error_details_base_url.ts
156
156
  */
157
157
  const ERROR_DETAILS_PAGE_BASE_URL = 'https://angular.io/errors';
158
+ /**
159
+ * URL for the XSS security documentation.
160
+ */
161
+ const XSS_SECURITY_URL = 'https://g.co/ng/security#xss';
158
162
 
159
163
  /**
160
164
  * @license
@@ -1440,15 +1444,6 @@ const EMBEDDED_VIEW_INJECTOR = 21;
1440
1444
  * there should be no need to refer to `HEADER_OFFSET` anywhere else.
1441
1445
  */
1442
1446
  const HEADER_OFFSET = 22;
1443
- /**
1444
- * Converts `TViewType` into human readable text.
1445
- * Make sure this matches with `TViewType`
1446
- */
1447
- const TViewTypeAsString = [
1448
- 'Root',
1449
- 'Component',
1450
- 'Embedded', // 2
1451
- ];
1452
1447
  // Note: This hack is necessary so we don't erroneously get a circular dependency
1453
1448
  // failure based on types.
1454
1449
  const unusedValueExportToPlacateAjd$8 = 1;
@@ -1616,10 +1611,6 @@ function assertIndexInDeclRange(lView, index) {
1616
1611
  const tView = lView[1];
1617
1612
  assertBetween(HEADER_OFFSET, tView.bindingStartIndex, index);
1618
1613
  }
1619
- function assertIndexInVarsRange(lView, index) {
1620
- const tView = lView[1];
1621
- assertBetween(tView.bindingStartIndex, tView.expandoStartIndex, index);
1622
- }
1623
1614
  function assertIndexInExpandoRange(lView, index) {
1624
1615
  const tView = lView[1];
1625
1616
  assertBetween(tView.expandoStartIndex, lView.length, index);
@@ -6520,26 +6511,17 @@ function processCleanups(tView, lView) {
6520
6511
  if (tCleanup !== null) {
6521
6512
  for (let i = 0; i < tCleanup.length - 1; i += 2) {
6522
6513
  if (typeof tCleanup[i] === 'string') {
6523
- // This is a native DOM listener
6524
- const idxOrTargetGetter = tCleanup[i + 1];
6525
- const target = typeof idxOrTargetGetter === 'function' ?
6526
- idxOrTargetGetter(lView) :
6527
- unwrapRNode(lView[idxOrTargetGetter]);
6528
- const listener = lCleanup[lastLCleanupIndex = tCleanup[i + 2]];
6529
- const useCaptureOrSubIdx = tCleanup[i + 3];
6530
- if (typeof useCaptureOrSubIdx === 'boolean') {
6531
- // native DOM listener registered with Renderer3
6532
- target.removeEventListener(tCleanup[i], listener, useCaptureOrSubIdx);
6514
+ // This is a native DOM listener. It will occupy 4 entries in the TCleanup array (hence i +=
6515
+ // 2 at the end of this block).
6516
+ const targetIdx = tCleanup[i + 3];
6517
+ ngDevMode && assertNumber(targetIdx, 'cleanup target must be a number');
6518
+ if (targetIdx >= 0) {
6519
+ // unregister
6520
+ lCleanup[lastLCleanupIndex = targetIdx]();
6533
6521
  }
6534
6522
  else {
6535
- if (useCaptureOrSubIdx >= 0) {
6536
- // unregister
6537
- lCleanup[lastLCleanupIndex = useCaptureOrSubIdx]();
6538
- }
6539
- else {
6540
- // Subscription
6541
- lCleanup[lastLCleanupIndex = -useCaptureOrSubIdx].unsubscribe();
6542
- }
6523
+ // Subscription
6524
+ lCleanup[lastLCleanupIndex = -targetIdx].unsubscribe();
6543
6525
  }
6544
6526
  i += 2;
6545
6527
  }
@@ -7395,7 +7377,7 @@ class SafeValueImpl {
7395
7377
  }
7396
7378
  toString() {
7397
7379
  return `SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity}` +
7398
- ` (see https://g.co/ng/security#xss)`;
7380
+ ` (see ${XSS_SECURITY_URL})`;
7399
7381
  }
7400
7382
  }
7401
7383
  class SafeHtmlImpl extends SafeValueImpl {
@@ -7433,7 +7415,7 @@ function allowSanitizationBypassAndThrow(value, type) {
7433
7415
  // Allow ResourceURLs in URL contexts, they are strictly more trusted.
7434
7416
  if (actualType === "ResourceURL" /* BypassType.ResourceUrl */ && type === "URL" /* BypassType.Url */)
7435
7417
  return true;
7436
- throw new Error(`Required a safe ${type}, got a ${actualType} (see https://g.co/ng/security#xss)`);
7418
+ throw new Error(`Required a safe ${type}, got a ${actualType} (see ${XSS_SECURITY_URL})`);
7437
7419
  }
7438
7420
  return actualType === type;
7439
7421
  }
@@ -7673,7 +7655,7 @@ function _sanitizeUrl(url) {
7673
7655
  if (url.match(SAFE_URL_PATTERN))
7674
7656
  return url;
7675
7657
  if (typeof ngDevMode === 'undefined' || ngDevMode) {
7676
- console.warn(`WARNING: sanitizing unsafe URL value ${url} (see https://g.co/ng/security#xss)`);
7658
+ console.warn(`WARNING: sanitizing unsafe URL value ${url} (see ${XSS_SECURITY_URL})`);
7677
7659
  }
7678
7660
  return 'unsafe:' + url;
7679
7661
  }
@@ -7901,7 +7883,7 @@ function _sanitizeHtml(defaultDoc, unsafeHtmlInput) {
7901
7883
  const sanitizer = new SanitizingHtmlSerializer();
7902
7884
  const safeHtml = sanitizer.sanitizeChildren(getTemplateContent(inertBodyElement) || inertBodyElement);
7903
7885
  if ((typeof ngDevMode === 'undefined' || ngDevMode) && sanitizer.sanitizedSomething) {
7904
- console.warn('WARNING: sanitizing HTML stripped some content, see https://g.co/ng/security#xss');
7886
+ console.warn(`WARNING: sanitizing HTML stripped some content, see ${XSS_SECURITY_URL}`);
7905
7887
  }
7906
7888
  return trustedHTMLFromString(safeHtml);
7907
7889
  }
@@ -8048,8 +8030,7 @@ function ɵɵsanitizeResourceUrl(unsafeResourceUrl) {
8048
8030
  if (allowSanitizationBypassAndThrow(unsafeResourceUrl, "ResourceURL" /* BypassType.ResourceUrl */)) {
8049
8031
  return trustedScriptURLFromStringBypass(unwrapSafeValue(unsafeResourceUrl));
8050
8032
  }
8051
- throw new RuntimeError(904 /* RuntimeErrorCode.UNSAFE_VALUE_IN_RESOURCE_URL */, ngDevMode &&
8052
- 'unsafe value used in a resource URL context (see https://g.co/ng/security#xss)');
8033
+ throw new RuntimeError(904 /* RuntimeErrorCode.UNSAFE_VALUE_IN_RESOURCE_URL */, ngDevMode && `unsafe value used in a resource URL context (see ${XSS_SECURITY_URL})`);
8053
8034
  }
8054
8035
  /**
8055
8036
  * A `script` sanitizer which only lets trusted javascript through.
@@ -9061,7 +9042,6 @@ function unwrapElementRef(value) {
9061
9042
  * Use of this source code is governed by an MIT-style license that can be
9062
9043
  * found in the LICENSE file at https://angular.io/license
9063
9044
  */
9064
- const Renderer2Interceptor = new InjectionToken('Renderer2Interceptor');
9065
9045
  /**
9066
9046
  * Creates and initializes a custom renderer that implements the `Renderer2` base class.
9067
9047
  *
@@ -9145,7 +9125,7 @@ class Version {
9145
9125
  /**
9146
9126
  * @publicApi
9147
9127
  */
9148
- const VERSION = new Version('15.0.0');
9128
+ const VERSION = new Version('15.0.2');
9149
9129
 
9150
9130
  /**
9151
9131
  * @license
@@ -10993,812 +10973,6 @@ function ɵɵinvalidFactory() {
10993
10973
  throw new Error(msg);
10994
10974
  }
10995
10975
 
10996
- /**
10997
- * @license
10998
- * Copyright Google LLC All Rights Reserved.
10999
- *
11000
- * Use of this source code is governed by an MIT-style license that can be
11001
- * found in the LICENSE file at https://angular.io/license
11002
- */
11003
- /**
11004
- * THIS FILE CONTAINS CODE WHICH SHOULD BE TREE SHAKEN AND NEVER CALLED FROM PRODUCTION CODE!!!
11005
- */
11006
- /**
11007
- * Creates an `Array` construction with a given name. This is useful when
11008
- * looking for memory consumption to see what time of array it is.
11009
- *
11010
- *
11011
- * @param name Name to give to the constructor
11012
- * @returns A subclass of `Array` if possible. This can only be done in
11013
- * environments which support `class` construct.
11014
- */
11015
- function createNamedArrayType(name) {
11016
- // This should never be called in prod mode, so let's verify that is the case.
11017
- if (ngDevMode) {
11018
- try {
11019
- // If this function were compromised the following could lead to arbitrary
11020
- // script execution. We bless it with Trusted Types anyway since this
11021
- // function is stripped out of production binaries.
11022
- return (newTrustedFunctionForDev('Array', `return class ${name} extends Array{}`))(Array);
11023
- }
11024
- catch (e) {
11025
- // If it does not work just give up and fall back to regular Array.
11026
- return Array;
11027
- }
11028
- }
11029
- else {
11030
- throw new Error('Looks like we are in \'prod mode\', but we are creating a named Array type, which is wrong! Check your code');
11031
- }
11032
- }
11033
-
11034
- /**
11035
- * @license
11036
- * Copyright Google LLC All Rights Reserved.
11037
- *
11038
- * Use of this source code is governed by an MIT-style license that can be
11039
- * found in the LICENSE file at https://angular.io/license
11040
- */
11041
- function toTStylingRange(prev, next) {
11042
- ngDevMode && assertNumberInRange(prev, 0, 32767 /* StylingRange.UNSIGNED_MASK */);
11043
- ngDevMode && assertNumberInRange(next, 0, 32767 /* StylingRange.UNSIGNED_MASK */);
11044
- return (prev << 17 /* StylingRange.PREV_SHIFT */ | next << 2 /* StylingRange.NEXT_SHIFT */);
11045
- }
11046
- function getTStylingRangePrev(tStylingRange) {
11047
- ngDevMode && assertNumber(tStylingRange, 'expected number');
11048
- return (tStylingRange >> 17 /* StylingRange.PREV_SHIFT */) & 32767 /* StylingRange.UNSIGNED_MASK */;
11049
- }
11050
- function getTStylingRangePrevDuplicate(tStylingRange) {
11051
- ngDevMode && assertNumber(tStylingRange, 'expected number');
11052
- return (tStylingRange & 2 /* StylingRange.PREV_DUPLICATE */) ==
11053
- 2 /* StylingRange.PREV_DUPLICATE */;
11054
- }
11055
- function setTStylingRangePrev(tStylingRange, previous) {
11056
- ngDevMode && assertNumber(tStylingRange, 'expected number');
11057
- ngDevMode && assertNumberInRange(previous, 0, 32767 /* StylingRange.UNSIGNED_MASK */);
11058
- return ((tStylingRange & ~4294836224 /* StylingRange.PREV_MASK */) |
11059
- (previous << 17 /* StylingRange.PREV_SHIFT */));
11060
- }
11061
- function setTStylingRangePrevDuplicate(tStylingRange) {
11062
- ngDevMode && assertNumber(tStylingRange, 'expected number');
11063
- return (tStylingRange | 2 /* StylingRange.PREV_DUPLICATE */);
11064
- }
11065
- function getTStylingRangeNext(tStylingRange) {
11066
- ngDevMode && assertNumber(tStylingRange, 'expected number');
11067
- return (tStylingRange & 131068 /* StylingRange.NEXT_MASK */) >> 2 /* StylingRange.NEXT_SHIFT */;
11068
- }
11069
- function setTStylingRangeNext(tStylingRange, next) {
11070
- ngDevMode && assertNumber(tStylingRange, 'expected number');
11071
- ngDevMode && assertNumberInRange(next, 0, 32767 /* StylingRange.UNSIGNED_MASK */);
11072
- return ((tStylingRange & ~131068 /* StylingRange.NEXT_MASK */) | //
11073
- next << 2 /* StylingRange.NEXT_SHIFT */);
11074
- }
11075
- function getTStylingRangeNextDuplicate(tStylingRange) {
11076
- ngDevMode && assertNumber(tStylingRange, 'expected number');
11077
- return (tStylingRange & 1 /* StylingRange.NEXT_DUPLICATE */) ===
11078
- 1 /* StylingRange.NEXT_DUPLICATE */;
11079
- }
11080
- function setTStylingRangeNextDuplicate(tStylingRange) {
11081
- ngDevMode && assertNumber(tStylingRange, 'expected number');
11082
- return (tStylingRange | 1 /* StylingRange.NEXT_DUPLICATE */);
11083
- }
11084
- function getTStylingRangeTail(tStylingRange) {
11085
- ngDevMode && assertNumber(tStylingRange, 'expected number');
11086
- const next = getTStylingRangeNext(tStylingRange);
11087
- return next === 0 ? getTStylingRangePrev(tStylingRange) : next;
11088
- }
11089
-
11090
- /**
11091
- * @license
11092
- * Copyright Google LLC All Rights Reserved.
11093
- *
11094
- * Use of this source code is governed by an MIT-style license that can be
11095
- * found in the LICENSE file at https://angular.io/license
11096
- */
11097
- /**
11098
- * Patch a `debug` property on top of the existing object.
11099
- *
11100
- * NOTE: always call this method with `ngDevMode && attachDebugObject(...)`
11101
- *
11102
- * @param obj Object to patch
11103
- * @param debug Value to patch
11104
- */
11105
- function attachDebugObject(obj, debug) {
11106
- if (ngDevMode) {
11107
- Object.defineProperty(obj, 'debug', { value: debug, enumerable: false });
11108
- }
11109
- else {
11110
- throw new Error('This method should be guarded with `ngDevMode` so that it can be tree shaken in production!');
11111
- }
11112
- }
11113
- /**
11114
- * Patch a `debug` property getter on top of the existing object.
11115
- *
11116
- * NOTE: always call this method with `ngDevMode && attachDebugObject(...)`
11117
- *
11118
- * @param obj Object to patch
11119
- * @param debugGetter Getter returning a value to patch
11120
- */
11121
- function attachDebugGetter(obj, debugGetter) {
11122
- if (ngDevMode) {
11123
- Object.defineProperty(obj, 'debug', { get: debugGetter, enumerable: false });
11124
- }
11125
- else {
11126
- throw new Error('This method should be guarded with `ngDevMode` so that it can be tree shaken in production!');
11127
- }
11128
- }
11129
-
11130
- /**
11131
- * @license
11132
- * Copyright Google LLC All Rights Reserved.
11133
- *
11134
- * Use of this source code is governed by an MIT-style license that can be
11135
- * found in the LICENSE file at https://angular.io/license
11136
- */
11137
- /*
11138
- * This file contains conditionally attached classes which provide human readable (debug) level
11139
- * information for `LView`, `LContainer` and other internal data structures. These data structures
11140
- * are stored internally as array which makes it very difficult during debugging to reason about the
11141
- * current state of the system.
11142
- *
11143
- * Patching the array with extra property does change the array's hidden class' but it does not
11144
- * change the cost of access, therefore this patching should not have significant if any impact in
11145
- * `ngDevMode` mode. (see: https://jsperf.com/array-vs-monkey-patch-array)
11146
- *
11147
- * So instead of seeing:
11148
- * ```
11149
- * Array(30) [Object, 659, null, …]
11150
- * ```
11151
- *
11152
- * You get to see:
11153
- * ```
11154
- * LViewDebug {
11155
- * views: [...],
11156
- * flags: {attached: true, ...}
11157
- * nodes: [
11158
- * {html: '<div id="123">', ..., nodes: [
11159
- * {html: '<span>', ..., nodes: null}
11160
- * ]}
11161
- * ]
11162
- * }
11163
- * ```
11164
- */
11165
- let LVIEW_COMPONENT_CACHE;
11166
- let LVIEW_EMBEDDED_CACHE;
11167
- let LVIEW_ROOT;
11168
- let LVIEW_COMPONENT;
11169
- let LVIEW_EMBEDDED;
11170
- /**
11171
- * This function clones a blueprint and creates LView.
11172
- *
11173
- * Simple slice will keep the same type, and we need it to be LView
11174
- */
11175
- function cloneToLViewFromTViewBlueprint(tView) {
11176
- const debugTView = tView;
11177
- const lView = getLViewToClone(debugTView.type, tView.template && tView.template.name);
11178
- return lView.concat(tView.blueprint);
11179
- }
11180
- class LRootView extends Array {
11181
- }
11182
- class LComponentView extends Array {
11183
- }
11184
- class LEmbeddedView extends Array {
11185
- }
11186
- function getLViewToClone(type, name) {
11187
- switch (type) {
11188
- case 0 /* TViewType.Root */:
11189
- if (LVIEW_ROOT === undefined)
11190
- LVIEW_ROOT = new LRootView();
11191
- return LVIEW_ROOT;
11192
- case 1 /* TViewType.Component */:
11193
- if (!ngDevMode || !ngDevMode.namedConstructors) {
11194
- if (LVIEW_COMPONENT === undefined)
11195
- LVIEW_COMPONENT = new LComponentView();
11196
- return LVIEW_COMPONENT;
11197
- }
11198
- if (LVIEW_COMPONENT_CACHE === undefined)
11199
- LVIEW_COMPONENT_CACHE = new Map();
11200
- let componentArray = LVIEW_COMPONENT_CACHE.get(name);
11201
- if (componentArray === undefined) {
11202
- componentArray = new (createNamedArrayType('LComponentView' + nameSuffix(name)))();
11203
- LVIEW_COMPONENT_CACHE.set(name, componentArray);
11204
- }
11205
- return componentArray;
11206
- case 2 /* TViewType.Embedded */:
11207
- if (!ngDevMode || !ngDevMode.namedConstructors) {
11208
- if (LVIEW_EMBEDDED === undefined)
11209
- LVIEW_EMBEDDED = new LEmbeddedView();
11210
- return LVIEW_EMBEDDED;
11211
- }
11212
- if (LVIEW_EMBEDDED_CACHE === undefined)
11213
- LVIEW_EMBEDDED_CACHE = new Map();
11214
- let embeddedArray = LVIEW_EMBEDDED_CACHE.get(name);
11215
- if (embeddedArray === undefined) {
11216
- embeddedArray = new (createNamedArrayType('LEmbeddedView' + nameSuffix(name)))();
11217
- LVIEW_EMBEDDED_CACHE.set(name, embeddedArray);
11218
- }
11219
- return embeddedArray;
11220
- }
11221
- }
11222
- function nameSuffix(text) {
11223
- if (text == null)
11224
- return '';
11225
- const index = text.lastIndexOf('_Template');
11226
- return '_' + (index === -1 ? text : text.slice(0, index));
11227
- }
11228
- /**
11229
- * This class is a debug version of Object literal so that we can have constructor name show up
11230
- * in
11231
- * debug tools in ngDevMode.
11232
- */
11233
- const TViewConstructor = class TView {
11234
- constructor(type, blueprint, template, queries, viewQuery, declTNode, data, bindingStartIndex, expandoStartIndex, hostBindingOpCodes, firstCreatePass, firstUpdatePass, staticViewQueries, staticContentQueries, preOrderHooks, preOrderCheckHooks, contentHooks, contentCheckHooks, viewHooks, viewCheckHooks, destroyHooks, cleanup, contentQueries, components, directiveRegistry, pipeRegistry, firstChild, schemas, consts, incompleteFirstPass, _decls, _vars) {
11235
- this.type = type;
11236
- this.blueprint = blueprint;
11237
- this.template = template;
11238
- this.queries = queries;
11239
- this.viewQuery = viewQuery;
11240
- this.declTNode = declTNode;
11241
- this.data = data;
11242
- this.bindingStartIndex = bindingStartIndex;
11243
- this.expandoStartIndex = expandoStartIndex;
11244
- this.hostBindingOpCodes = hostBindingOpCodes;
11245
- this.firstCreatePass = firstCreatePass;
11246
- this.firstUpdatePass = firstUpdatePass;
11247
- this.staticViewQueries = staticViewQueries;
11248
- this.staticContentQueries = staticContentQueries;
11249
- this.preOrderHooks = preOrderHooks;
11250
- this.preOrderCheckHooks = preOrderCheckHooks;
11251
- this.contentHooks = contentHooks;
11252
- this.contentCheckHooks = contentCheckHooks;
11253
- this.viewHooks = viewHooks;
11254
- this.viewCheckHooks = viewCheckHooks;
11255
- this.destroyHooks = destroyHooks;
11256
- this.cleanup = cleanup;
11257
- this.contentQueries = contentQueries;
11258
- this.components = components;
11259
- this.directiveRegistry = directiveRegistry;
11260
- this.pipeRegistry = pipeRegistry;
11261
- this.firstChild = firstChild;
11262
- this.schemas = schemas;
11263
- this.consts = consts;
11264
- this.incompleteFirstPass = incompleteFirstPass;
11265
- this._decls = _decls;
11266
- this._vars = _vars;
11267
- }
11268
- get template_() {
11269
- const buf = [];
11270
- processTNodeChildren(this.firstChild, buf);
11271
- return buf.join('');
11272
- }
11273
- get type_() {
11274
- return TViewTypeAsString[this.type] || `TViewType.?${this.type}?`;
11275
- }
11276
- };
11277
- class TNode {
11278
- constructor(tView_, //
11279
- type, //
11280
- index, //
11281
- insertBeforeIndex, //
11282
- injectorIndex, //
11283
- componentOffset, //
11284
- directiveStart, //
11285
- directiveEnd, //
11286
- directiveStylingLast, //
11287
- propertyBindings, //
11288
- flags, //
11289
- providerIndexes, //
11290
- value, //
11291
- attrs, //
11292
- mergedAttrs, //
11293
- localNames, //
11294
- initialInputs, //
11295
- inputs, //
11296
- outputs, //
11297
- tViews, //
11298
- next, //
11299
- projectionNext, //
11300
- child, //
11301
- parent, //
11302
- projection, //
11303
- styles, //
11304
- stylesWithoutHost, //
11305
- residualStyles, //
11306
- classes, //
11307
- classesWithoutHost, //
11308
- residualClasses, //
11309
- classBindings, //
11310
- styleBindings) {
11311
- this.tView_ = tView_;
11312
- this.type = type;
11313
- this.index = index;
11314
- this.insertBeforeIndex = insertBeforeIndex;
11315
- this.injectorIndex = injectorIndex;
11316
- this.componentOffset = componentOffset;
11317
- this.directiveStart = directiveStart;
11318
- this.directiveEnd = directiveEnd;
11319
- this.directiveStylingLast = directiveStylingLast;
11320
- this.propertyBindings = propertyBindings;
11321
- this.flags = flags;
11322
- this.providerIndexes = providerIndexes;
11323
- this.value = value;
11324
- this.attrs = attrs;
11325
- this.mergedAttrs = mergedAttrs;
11326
- this.localNames = localNames;
11327
- this.initialInputs = initialInputs;
11328
- this.inputs = inputs;
11329
- this.outputs = outputs;
11330
- this.tViews = tViews;
11331
- this.next = next;
11332
- this.projectionNext = projectionNext;
11333
- this.child = child;
11334
- this.parent = parent;
11335
- this.projection = projection;
11336
- this.styles = styles;
11337
- this.stylesWithoutHost = stylesWithoutHost;
11338
- this.residualStyles = residualStyles;
11339
- this.classes = classes;
11340
- this.classesWithoutHost = classesWithoutHost;
11341
- this.residualClasses = residualClasses;
11342
- this.classBindings = classBindings;
11343
- this.styleBindings = styleBindings;
11344
- }
11345
- /**
11346
- * Return a human debug version of the set of `NodeInjector`s which will be consulted when
11347
- * resolving tokens from this `TNode`.
11348
- *
11349
- * When debugging applications, it is often difficult to determine which `NodeInjector`s will be
11350
- * consulted. This method shows a list of `DebugNode`s representing the `TNode`s which will be
11351
- * consulted in order when resolving a token starting at this `TNode`.
11352
- *
11353
- * The original data is stored in `LView` and `TView` with a lot of offset indexes, and so it is
11354
- * difficult to reason about.
11355
- *
11356
- * @param lView The `LView` instance for this `TNode`.
11357
- */
11358
- debugNodeInjectorPath(lView) {
11359
- const path = [];
11360
- let injectorIndex = getInjectorIndex(this, lView);
11361
- if (injectorIndex === -1) {
11362
- // Looks like the current `TNode` does not have `NodeInjector` associated with it => look for
11363
- // parent NodeInjector.
11364
- const parentLocation = getParentInjectorLocation(this, lView);
11365
- if (parentLocation !== NO_PARENT_INJECTOR) {
11366
- // We found a parent, so start searching from the parent location.
11367
- injectorIndex = getParentInjectorIndex(parentLocation);
11368
- lView = getParentInjectorView(parentLocation, lView);
11369
- }
11370
- else {
11371
- // No parents have been found, so there are no `NodeInjector`s to consult.
11372
- }
11373
- }
11374
- while (injectorIndex !== -1) {
11375
- ngDevMode && assertNodeInjector(lView, injectorIndex);
11376
- const tNode = lView[TVIEW].data[injectorIndex + 8 /* NodeInjectorOffset.TNODE */];
11377
- path.push(buildDebugNode(tNode, lView));
11378
- const parentLocation = lView[injectorIndex + 8 /* NodeInjectorOffset.PARENT */];
11379
- if (parentLocation === NO_PARENT_INJECTOR) {
11380
- injectorIndex = -1;
11381
- }
11382
- else {
11383
- injectorIndex = getParentInjectorIndex(parentLocation);
11384
- lView = getParentInjectorView(parentLocation, lView);
11385
- }
11386
- }
11387
- return path;
11388
- }
11389
- get type_() {
11390
- return toTNodeTypeAsString(this.type) || `TNodeType.?${this.type}?`;
11391
- }
11392
- get flags_() {
11393
- const flags = [];
11394
- if (this.flags & 8 /* TNodeFlags.hasClassInput */)
11395
- flags.push('TNodeFlags.hasClassInput');
11396
- if (this.flags & 4 /* TNodeFlags.hasContentQuery */)
11397
- flags.push('TNodeFlags.hasContentQuery');
11398
- if (this.flags & 16 /* TNodeFlags.hasStyleInput */)
11399
- flags.push('TNodeFlags.hasStyleInput');
11400
- if (this.flags & 64 /* TNodeFlags.hasHostBindings */)
11401
- flags.push('TNodeFlags.hasHostBindings');
11402
- if (this.flags & 1 /* TNodeFlags.isDirectiveHost */)
11403
- flags.push('TNodeFlags.isDirectiveHost');
11404
- if (this.flags & 32 /* TNodeFlags.isDetached */)
11405
- flags.push('TNodeFlags.isDetached');
11406
- if (this.flags & 2 /* TNodeFlags.isProjected */)
11407
- flags.push('TNodeFlags.isProjected');
11408
- return flags.join('|');
11409
- }
11410
- get template_() {
11411
- if (this.type & 1 /* TNodeType.Text */)
11412
- return this.value;
11413
- const buf = [];
11414
- const tagName = typeof this.value === 'string' && this.value || this.type_;
11415
- buf.push('<', tagName);
11416
- if (this.flags) {
11417
- buf.push(' ', this.flags_);
11418
- }
11419
- if (this.attrs) {
11420
- for (let i = 0; i < this.attrs.length;) {
11421
- const attrName = this.attrs[i++];
11422
- if (typeof attrName == 'number') {
11423
- break;
11424
- }
11425
- const attrValue = this.attrs[i++];
11426
- buf.push(' ', attrName, '="', attrValue, '"');
11427
- }
11428
- }
11429
- buf.push('>');
11430
- processTNodeChildren(this.child, buf);
11431
- buf.push('</', tagName, '>');
11432
- return buf.join('');
11433
- }
11434
- get styleBindings_() {
11435
- return toDebugStyleBinding(this, false);
11436
- }
11437
- get classBindings_() {
11438
- return toDebugStyleBinding(this, true);
11439
- }
11440
- get providerIndexStart_() {
11441
- return this.providerIndexes & 1048575 /* TNodeProviderIndexes.ProvidersStartIndexMask */;
11442
- }
11443
- get providerIndexEnd_() {
11444
- return this.providerIndexStart_ +
11445
- (this.providerIndexes >>> 20 /* TNodeProviderIndexes.CptViewProvidersCountShift */);
11446
- }
11447
- }
11448
- const TNodeDebug = TNode;
11449
- function toDebugStyleBinding(tNode, isClassBased) {
11450
- const tData = tNode.tView_.data;
11451
- const bindings = [];
11452
- const range = isClassBased ? tNode.classBindings : tNode.styleBindings;
11453
- const prev = getTStylingRangePrev(range);
11454
- const next = getTStylingRangeNext(range);
11455
- let isTemplate = next !== 0;
11456
- let cursor = isTemplate ? next : prev;
11457
- while (cursor !== 0) {
11458
- const itemKey = tData[cursor];
11459
- const itemRange = tData[cursor + 1];
11460
- bindings.unshift({
11461
- key: itemKey,
11462
- index: cursor,
11463
- isTemplate: isTemplate,
11464
- prevDuplicate: getTStylingRangePrevDuplicate(itemRange),
11465
- nextDuplicate: getTStylingRangeNextDuplicate(itemRange),
11466
- nextIndex: getTStylingRangeNext(itemRange),
11467
- prevIndex: getTStylingRangePrev(itemRange),
11468
- });
11469
- if (cursor === prev)
11470
- isTemplate = false;
11471
- cursor = getTStylingRangePrev(itemRange);
11472
- }
11473
- bindings.push((isClassBased ? tNode.residualClasses : tNode.residualStyles) || null);
11474
- return bindings;
11475
- }
11476
- function processTNodeChildren(tNode, buf) {
11477
- while (tNode) {
11478
- buf.push(tNode.template_);
11479
- tNode = tNode.next;
11480
- }
11481
- }
11482
- class TViewData extends Array {
11483
- }
11484
- let TVIEWDATA_EMPTY; // can't initialize here or it will not be tree shaken, because
11485
- // `LView` constructor could have side-effects.
11486
- /**
11487
- * This function clones a blueprint and creates TData.
11488
- *
11489
- * Simple slice will keep the same type, and we need it to be TData
11490
- */
11491
- function cloneToTViewData(list) {
11492
- if (TVIEWDATA_EMPTY === undefined)
11493
- TVIEWDATA_EMPTY = new TViewData();
11494
- return TVIEWDATA_EMPTY.concat(list);
11495
- }
11496
- class LViewBlueprint extends Array {
11497
- }
11498
- class MatchesArray extends Array {
11499
- }
11500
- class TViewComponents extends Array {
11501
- }
11502
- class TNodeLocalNames extends Array {
11503
- }
11504
- class TNodeInitialInputs extends Array {
11505
- }
11506
- class LCleanup extends Array {
11507
- }
11508
- class TCleanup extends Array {
11509
- }
11510
- function attachLViewDebug(lView) {
11511
- attachDebugObject(lView, new LViewDebug(lView));
11512
- }
11513
- function attachLContainerDebug(lContainer) {
11514
- attachDebugObject(lContainer, new LContainerDebug(lContainer));
11515
- }
11516
- function toDebug(obj) {
11517
- if (obj) {
11518
- const debug = obj.debug;
11519
- assertDefined(debug, 'Object does not have a debug representation.');
11520
- return debug;
11521
- }
11522
- else {
11523
- return obj;
11524
- }
11525
- }
11526
- /**
11527
- * Use this method to unwrap a native element in `LView` and convert it into HTML for easier
11528
- * reading.
11529
- *
11530
- * @param value possibly wrapped native DOM node.
11531
- * @param includeChildren If `true` then the serialized HTML form will include child elements
11532
- * (same
11533
- * as `outerHTML`). If `false` then the serialized HTML form will only contain the element
11534
- * itself
11535
- * (will not serialize child elements).
11536
- */
11537
- function toHtml(value, includeChildren = false) {
11538
- const node = unwrapRNode(value);
11539
- if (node) {
11540
- switch (node.nodeType) {
11541
- case Node.TEXT_NODE:
11542
- return node.textContent;
11543
- case Node.COMMENT_NODE:
11544
- return `<!--${node.textContent}-->`;
11545
- case Node.ELEMENT_NODE:
11546
- const outerHTML = node.outerHTML;
11547
- if (includeChildren) {
11548
- return outerHTML;
11549
- }
11550
- else {
11551
- const innerHTML = '>' + node.innerHTML + '<';
11552
- return (outerHTML.split(innerHTML)[0]) + '>';
11553
- }
11554
- }
11555
- }
11556
- return null;
11557
- }
11558
- class LViewDebug {
11559
- constructor(_raw_lView) {
11560
- this._raw_lView = _raw_lView;
11561
- }
11562
- /**
11563
- * Flags associated with the `LView` unpacked into a more readable state.
11564
- */
11565
- get flags() {
11566
- const flags = this._raw_lView[FLAGS];
11567
- return {
11568
- __raw__flags__: flags,
11569
- initPhaseState: flags & 3 /* LViewFlags.InitPhaseStateMask */,
11570
- creationMode: !!(flags & 4 /* LViewFlags.CreationMode */),
11571
- firstViewPass: !!(flags & 8 /* LViewFlags.FirstLViewPass */),
11572
- checkAlways: !!(flags & 16 /* LViewFlags.CheckAlways */),
11573
- dirty: !!(flags & 32 /* LViewFlags.Dirty */),
11574
- attached: !!(flags & 64 /* LViewFlags.Attached */),
11575
- destroyed: !!(flags & 128 /* LViewFlags.Destroyed */),
11576
- isRoot: !!(flags & 256 /* LViewFlags.IsRoot */),
11577
- indexWithinInitPhase: flags >> 11 /* LViewFlags.IndexWithinInitPhaseShift */,
11578
- };
11579
- }
11580
- get parent() {
11581
- return toDebug(this._raw_lView[PARENT]);
11582
- }
11583
- get hostHTML() {
11584
- return toHtml(this._raw_lView[HOST], true);
11585
- }
11586
- get html() {
11587
- return (this.nodes || []).map(mapToHTML).join('');
11588
- }
11589
- get context() {
11590
- return this._raw_lView[CONTEXT];
11591
- }
11592
- /**
11593
- * The tree of nodes associated with the current `LView`. The nodes have been normalized into
11594
- * a tree structure with relevant details pulled out for readability.
11595
- */
11596
- get nodes() {
11597
- const lView = this._raw_lView;
11598
- const tNode = lView[TVIEW].firstChild;
11599
- return toDebugNodes(tNode, lView);
11600
- }
11601
- get template() {
11602
- return this.tView.template_;
11603
- }
11604
- get tView() {
11605
- return this._raw_lView[TVIEW];
11606
- }
11607
- get cleanup() {
11608
- return this._raw_lView[CLEANUP];
11609
- }
11610
- get injector() {
11611
- return this._raw_lView[INJECTOR$1];
11612
- }
11613
- get rendererFactory() {
11614
- return this._raw_lView[RENDERER_FACTORY];
11615
- }
11616
- get renderer() {
11617
- return this._raw_lView[RENDERER];
11618
- }
11619
- get sanitizer() {
11620
- return this._raw_lView[SANITIZER];
11621
- }
11622
- get childHead() {
11623
- return toDebug(this._raw_lView[CHILD_HEAD]);
11624
- }
11625
- get next() {
11626
- return toDebug(this._raw_lView[NEXT]);
11627
- }
11628
- get childTail() {
11629
- return toDebug(this._raw_lView[CHILD_TAIL]);
11630
- }
11631
- get declarationView() {
11632
- return toDebug(this._raw_lView[DECLARATION_VIEW]);
11633
- }
11634
- get queries() {
11635
- return this._raw_lView[QUERIES];
11636
- }
11637
- get tHost() {
11638
- return this._raw_lView[T_HOST];
11639
- }
11640
- get id() {
11641
- return this._raw_lView[ID];
11642
- }
11643
- get decls() {
11644
- return toLViewRange(this.tView, this._raw_lView, HEADER_OFFSET, this.tView.bindingStartIndex);
11645
- }
11646
- get vars() {
11647
- return toLViewRange(this.tView, this._raw_lView, this.tView.bindingStartIndex, this.tView.expandoStartIndex);
11648
- }
11649
- get expando() {
11650
- return toLViewRange(this.tView, this._raw_lView, this.tView.expandoStartIndex, this._raw_lView.length);
11651
- }
11652
- /**
11653
- * Normalized view of child views (and containers) attached at this location.
11654
- */
11655
- get childViews() {
11656
- const childViews = [];
11657
- let child = this.childHead;
11658
- while (child) {
11659
- childViews.push(child);
11660
- child = child.next;
11661
- }
11662
- return childViews;
11663
- }
11664
- }
11665
- function mapToHTML(node) {
11666
- if (node.type === 'ElementContainer') {
11667
- return (node.children || []).map(mapToHTML).join('');
11668
- }
11669
- else if (node.type === 'IcuContainer') {
11670
- throw new Error('Not implemented');
11671
- }
11672
- else {
11673
- return toHtml(node.native, true) || '';
11674
- }
11675
- }
11676
- function toLViewRange(tView, lView, start, end) {
11677
- let content = [];
11678
- for (let index = start; index < end; index++) {
11679
- content.push({ index: index, t: tView.data[index], l: lView[index] });
11680
- }
11681
- return { start: start, end: end, length: end - start, content: content };
11682
- }
11683
- /**
11684
- * Turns a flat list of nodes into a tree by walking the associated `TNode` tree.
11685
- *
11686
- * @param tNode
11687
- * @param lView
11688
- */
11689
- function toDebugNodes(tNode, lView) {
11690
- if (tNode) {
11691
- const debugNodes = [];
11692
- let tNodeCursor = tNode;
11693
- while (tNodeCursor) {
11694
- debugNodes.push(buildDebugNode(tNodeCursor, lView));
11695
- tNodeCursor = tNodeCursor.next;
11696
- }
11697
- return debugNodes;
11698
- }
11699
- else {
11700
- return [];
11701
- }
11702
- }
11703
- function buildDebugNode(tNode, lView) {
11704
- const rawValue = lView[tNode.index];
11705
- const native = unwrapRNode(rawValue);
11706
- const factories = [];
11707
- const instances = [];
11708
- const tView = lView[TVIEW];
11709
- for (let i = tNode.directiveStart; i < tNode.directiveEnd; i++) {
11710
- const def = tView.data[i];
11711
- factories.push(def.type);
11712
- instances.push(lView[i]);
11713
- }
11714
- return {
11715
- html: toHtml(native),
11716
- type: toTNodeTypeAsString(tNode.type),
11717
- tNode,
11718
- native: native,
11719
- children: toDebugNodes(tNode.child, lView),
11720
- factories,
11721
- instances,
11722
- injector: buildNodeInjectorDebug(tNode, tView, lView),
11723
- get injectorResolutionPath() {
11724
- return tNode.debugNodeInjectorPath(lView);
11725
- },
11726
- };
11727
- }
11728
- function buildNodeInjectorDebug(tNode, tView, lView) {
11729
- const viewProviders = [];
11730
- for (let i = tNode.providerIndexStart_; i < tNode.providerIndexEnd_; i++) {
11731
- viewProviders.push(tView.data[i]);
11732
- }
11733
- const providers = [];
11734
- for (let i = tNode.providerIndexEnd_; i < tNode.directiveEnd; i++) {
11735
- providers.push(tView.data[i]);
11736
- }
11737
- const nodeInjectorDebug = {
11738
- bloom: toBloom(lView, tNode.injectorIndex),
11739
- cumulativeBloom: toBloom(tView.data, tNode.injectorIndex),
11740
- providers,
11741
- viewProviders,
11742
- parentInjectorIndex: lView[tNode.providerIndexStart_ - 1],
11743
- };
11744
- return nodeInjectorDebug;
11745
- }
11746
- /**
11747
- * Convert a number at `idx` location in `array` into binary representation.
11748
- *
11749
- * @param array
11750
- * @param idx
11751
- */
11752
- function binary(array, idx) {
11753
- const value = array[idx];
11754
- // If not a number we print 8 `?` to retain alignment but let user know that it was called on
11755
- // wrong type.
11756
- if (typeof value !== 'number')
11757
- return '????????';
11758
- // We prefix 0s so that we have constant length number
11759
- const text = '00000000' + value.toString(2);
11760
- return text.substring(text.length - 8);
11761
- }
11762
- /**
11763
- * Convert a bloom filter at location `idx` in `array` into binary representation.
11764
- *
11765
- * @param array
11766
- * @param idx
11767
- */
11768
- function toBloom(array, idx) {
11769
- if (idx < 0) {
11770
- return 'NO_NODE_INJECTOR';
11771
- }
11772
- return `${binary(array, idx + 7)}_${binary(array, idx + 6)}_${binary(array, idx + 5)}_${binary(array, idx + 4)}_${binary(array, idx + 3)}_${binary(array, idx + 2)}_${binary(array, idx + 1)}_${binary(array, idx + 0)}`;
11773
- }
11774
- class LContainerDebug {
11775
- constructor(_raw_lContainer) {
11776
- this._raw_lContainer = _raw_lContainer;
11777
- }
11778
- get hasTransplantedViews() {
11779
- return this._raw_lContainer[HAS_TRANSPLANTED_VIEWS];
11780
- }
11781
- get views() {
11782
- return this._raw_lContainer.slice(CONTAINER_HEADER_OFFSET)
11783
- .map(toDebug);
11784
- }
11785
- get parent() {
11786
- return toDebug(this._raw_lContainer[PARENT]);
11787
- }
11788
- get movedViews() {
11789
- return this._raw_lContainer[MOVED_VIEWS];
11790
- }
11791
- get host() {
11792
- return this._raw_lContainer[HOST];
11793
- }
11794
- get native() {
11795
- return this._raw_lContainer[NATIVE];
11796
- }
11797
- get next() {
11798
- return toDebug(this._raw_lContainer[NEXT]);
11799
- }
11800
- }
11801
-
11802
10976
  /**
11803
10977
  * @license
11804
10978
  * Copyright Google LLC All Rights Reserved.
@@ -11872,7 +11046,7 @@ function renderChildComponents(hostLView, components) {
11872
11046
  }
11873
11047
  }
11874
11048
  function createLView(parentLView, tView, context, flags, host, tHostNode, rendererFactory, renderer, sanitizer, injector, embeddedViewInjector) {
11875
- const lView = ngDevMode ? cloneToLViewFromTViewBlueprint(tView) : tView.blueprint.slice();
11049
+ const lView = tView.blueprint.slice();
11876
11050
  lView[HOST] = host;
11877
11051
  lView[FLAGS] = flags | 4 /* LViewFlags.CreationMode */ | 64 /* LViewFlags.Attached */ | 8 /* LViewFlags.FirstLViewPass */;
11878
11052
  if (embeddedViewInjector !== null ||
@@ -11896,7 +11070,6 @@ function createLView(parentLView, tView, context, flags, host, tHostNode, render
11896
11070
  assertEqual(tView.type == 2 /* TViewType.Embedded */ ? parentLView !== null : true, true, 'Embedded views must have parentLView');
11897
11071
  lView[DECLARATION_COMPONENT_VIEW] =
11898
11072
  tView.type == 2 /* TViewType.Embedded */ ? parentLView[DECLARATION_COMPONENT_VIEW] : lView;
11899
- ngDevMode && attachLViewDebug(lView);
11900
11073
  return lView;
11901
11074
  }
11902
11075
  function getOrCreateTNode(tView, index, type, name, attrs) {
@@ -12279,73 +11452,38 @@ function createTView(type, declTNode, templateFn, decls, vars, directives, pipes
12279
11452
  const initialViewLength = bindingStartIndex + vars;
12280
11453
  const blueprint = createViewBlueprint(bindingStartIndex, initialViewLength);
12281
11454
  const consts = typeof constsOrFactory === 'function' ? constsOrFactory() : constsOrFactory;
12282
- const tView = blueprint[TVIEW] = ngDevMode ?
12283
- new TViewConstructor(type, // type: TViewType,
12284
- blueprint, // blueprint: LView,
12285
- templateFn, // template: ComponentTemplate<{}>|null,
12286
- null, // queries: TQueries|null
12287
- viewQuery, // viewQuery: ViewQueriesFunction<{}>|null,
12288
- declTNode, // declTNode: TNode|null,
12289
- cloneToTViewData(blueprint).fill(null, bindingStartIndex), // data: TData,
12290
- bindingStartIndex, // bindingStartIndex: number,
12291
- initialViewLength, // expandoStartIndex: number,
12292
- null, // hostBindingOpCodes: HostBindingOpCodes,
12293
- true, // firstCreatePass: boolean,
12294
- true, // firstUpdatePass: boolean,
12295
- false, // staticViewQueries: boolean,
12296
- false, // staticContentQueries: boolean,
12297
- null, // preOrderHooks: HookData|null,
12298
- null, // preOrderCheckHooks: HookData|null,
12299
- null, // contentHooks: HookData|null,
12300
- null, // contentCheckHooks: HookData|null,
12301
- null, // viewHooks: HookData|null,
12302
- null, // viewCheckHooks: HookData|null,
12303
- null, // destroyHooks: DestroyHookData|null,
12304
- null, // cleanup: any[]|null,
12305
- null, // contentQueries: number[]|null,
12306
- null, // components: number[]|null,
12307
- typeof directives === 'function' ? //
12308
- directives() : //
12309
- directives, // directiveRegistry: DirectiveDefList|null,
12310
- typeof pipes === 'function' ? pipes() : pipes, // pipeRegistry: PipeDefList|null,
12311
- null, // firstChild: TNode|null,
12312
- schemas, // schemas: SchemaMetadata[]|null,
12313
- consts, // consts: TConstants|null
12314
- false, // incompleteFirstPass: boolean
12315
- decls, // ngDevMode only: decls
12316
- vars) :
12317
- {
12318
- type: type,
12319
- blueprint: blueprint,
12320
- template: templateFn,
12321
- queries: null,
12322
- viewQuery: viewQuery,
12323
- declTNode: declTNode,
12324
- data: blueprint.slice().fill(null, bindingStartIndex),
12325
- bindingStartIndex: bindingStartIndex,
12326
- expandoStartIndex: initialViewLength,
12327
- hostBindingOpCodes: null,
12328
- firstCreatePass: true,
12329
- firstUpdatePass: true,
12330
- staticViewQueries: false,
12331
- staticContentQueries: false,
12332
- preOrderHooks: null,
12333
- preOrderCheckHooks: null,
12334
- contentHooks: null,
12335
- contentCheckHooks: null,
12336
- viewHooks: null,
12337
- viewCheckHooks: null,
12338
- destroyHooks: null,
12339
- cleanup: null,
12340
- contentQueries: null,
12341
- components: null,
12342
- directiveRegistry: typeof directives === 'function' ? directives() : directives,
12343
- pipeRegistry: typeof pipes === 'function' ? pipes() : pipes,
12344
- firstChild: null,
12345
- schemas: schemas,
12346
- consts: consts,
12347
- incompleteFirstPass: false
12348
- };
11455
+ const tView = blueprint[TVIEW] = {
11456
+ type: type,
11457
+ blueprint: blueprint,
11458
+ template: templateFn,
11459
+ queries: null,
11460
+ viewQuery: viewQuery,
11461
+ declTNode: declTNode,
11462
+ data: blueprint.slice().fill(null, bindingStartIndex),
11463
+ bindingStartIndex: bindingStartIndex,
11464
+ expandoStartIndex: initialViewLength,
11465
+ hostBindingOpCodes: null,
11466
+ firstCreatePass: true,
11467
+ firstUpdatePass: true,
11468
+ staticViewQueries: false,
11469
+ staticContentQueries: false,
11470
+ preOrderHooks: null,
11471
+ preOrderCheckHooks: null,
11472
+ contentHooks: null,
11473
+ contentCheckHooks: null,
11474
+ viewHooks: null,
11475
+ viewCheckHooks: null,
11476
+ destroyHooks: null,
11477
+ cleanup: null,
11478
+ contentQueries: null,
11479
+ components: null,
11480
+ directiveRegistry: typeof directives === 'function' ? directives() : directives,
11481
+ pipeRegistry: typeof pipes === 'function' ? pipes() : pipes,
11482
+ firstChild: null,
11483
+ schemas: schemas,
11484
+ consts: consts,
11485
+ incompleteFirstPass: false
11486
+ };
12349
11487
  if (ngDevMode) {
12350
11488
  // For performance reasons it is important that the tView retains the same shape during runtime.
12351
11489
  // (To make sure that all of the code is monomorphic.) For this reason we seal the object to
@@ -12355,7 +11493,7 @@ function createTView(type, declTNode, templateFn, decls, vars, directives, pipes
12355
11493
  return tView;
12356
11494
  }
12357
11495
  function createViewBlueprint(bindingStartIndex, initialViewLength) {
12358
- const blueprint = ngDevMode ? new LViewBlueprint() : [];
11496
+ const blueprint = [];
12359
11497
  for (let i = 0; i < initialViewLength; i++) {
12360
11498
  blueprint.push(i < bindingStartIndex ? null : NO_CHANGE);
12361
11499
  }
@@ -12408,74 +11546,40 @@ function createTNode(tView, tParent, type, index, value, attrs) {
12408
11546
  ngDevMode && ngDevMode.tNode++;
12409
11547
  ngDevMode && tParent && assertTNodeForTView(tParent, tView);
12410
11548
  let injectorIndex = tParent ? tParent.injectorIndex : -1;
12411
- const tNode = ngDevMode ?
12412
- new TNodeDebug(tView, // tView_: TView
12413
- type, // type: TNodeType
12414
- index, // index: number
12415
- null, // insertBeforeIndex: null|-1|number|number[]
12416
- injectorIndex, // injectorIndex: number
12417
- -1, // componentOffset: number
12418
- -1, // directiveStart: number
12419
- -1, // directiveEnd: number
12420
- -1, // directiveStylingLast: number
12421
- null, // propertyBindings: number[]|null
12422
- 0, // flags: TNodeFlags
12423
- 0, // providerIndexes: TNodeProviderIndexes
12424
- value, // value: string|null
12425
- attrs, // attrs: (string|AttributeMarker|(string|SelectorFlags)[])[]|null
12426
- null, // mergedAttrs
12427
- null, // localNames: (string|number)[]|null
12428
- undefined, // initialInputs: (string[]|null)[]|null|undefined
12429
- null, // inputs: PropertyAliases|null
12430
- null, // outputs: PropertyAliases|null
12431
- null, // tViews: ITView|ITView[]|null
12432
- null, // next: ITNode|null
12433
- null, // projectionNext: ITNode|null
12434
- null, // child: ITNode|null
12435
- tParent, // parent: TElementNode|TContainerNode|null
12436
- null, // projection: number|(ITNode|RNode[])[]|null
12437
- null, // styles: string|null
12438
- null, // stylesWithoutHost: string|null
12439
- undefined, // residualStyles: string|null
12440
- null, // classes: string|null
12441
- null, // classesWithoutHost: string|null
12442
- undefined, // residualClasses: string|null
12443
- 0, // classBindings: TStylingRange;
12444
- 0) :
12445
- {
12446
- type,
12447
- index,
12448
- insertBeforeIndex: null,
12449
- injectorIndex,
12450
- directiveStart: -1,
12451
- directiveEnd: -1,
12452
- directiveStylingLast: -1,
12453
- componentOffset: -1,
12454
- propertyBindings: null,
12455
- flags: 0,
12456
- providerIndexes: 0,
12457
- value: value,
12458
- attrs: attrs,
12459
- mergedAttrs: null,
12460
- localNames: null,
12461
- initialInputs: undefined,
12462
- inputs: null,
12463
- outputs: null,
12464
- tViews: null,
12465
- next: null,
12466
- projectionNext: null,
12467
- child: null,
12468
- parent: tParent,
12469
- projection: null,
12470
- styles: null,
12471
- stylesWithoutHost: null,
12472
- residualStyles: undefined,
12473
- classes: null,
12474
- classesWithoutHost: null,
12475
- residualClasses: undefined,
12476
- classBindings: 0,
12477
- styleBindings: 0,
12478
- };
11549
+ const tNode = {
11550
+ type,
11551
+ index,
11552
+ insertBeforeIndex: null,
11553
+ injectorIndex,
11554
+ directiveStart: -1,
11555
+ directiveEnd: -1,
11556
+ directiveStylingLast: -1,
11557
+ componentOffset: -1,
11558
+ propertyBindings: null,
11559
+ flags: 0,
11560
+ providerIndexes: 0,
11561
+ value: value,
11562
+ attrs: attrs,
11563
+ mergedAttrs: null,
11564
+ localNames: null,
11565
+ initialInputs: undefined,
11566
+ inputs: null,
11567
+ outputs: null,
11568
+ tViews: null,
11569
+ next: null,
11570
+ projectionNext: null,
11571
+ child: null,
11572
+ parent: tParent,
11573
+ projection: null,
11574
+ styles: null,
11575
+ stylesWithoutHost: null,
11576
+ residualStyles: undefined,
11577
+ classes: null,
11578
+ classesWithoutHost: null,
11579
+ residualClasses: undefined,
11580
+ classBindings: 0,
11581
+ styleBindings: 0,
11582
+ };
12479
11583
  if (ngDevMode) {
12480
11584
  // For performance reasons it is important that the tNode retains the same shape during runtime.
12481
11585
  // (To make sure that all of the code is monomorphic.) For this reason we seal the object to
@@ -12532,7 +11636,7 @@ function initializeInputAndOutputAliases(tView, tNode, hostDirectiveDefinitionMa
12532
11636
  const end = tNode.directiveEnd;
12533
11637
  const tViewData = tView.data;
12534
11638
  const tNodeAttrs = tNode.attrs;
12535
- const inputsFromAttrs = ngDevMode ? new TNodeInitialInputs() : [];
11639
+ const inputsFromAttrs = [];
12536
11640
  let inputsStore = null;
12537
11641
  let outputsStore = null;
12538
11642
  for (let directiveIndex = start; directiveIndex < end; directiveIndex++) {
@@ -12870,7 +11974,7 @@ function findDirectiveDefMatches(tView, tNode) {
12870
11974
  for (let i = 0; i < registry.length; i++) {
12871
11975
  const def = registry[i];
12872
11976
  if (isNodeMatchingSelectorList(tNode, def.selectors, /* isProjectionMode */ false)) {
12873
- matches || (matches = ngDevMode ? new MatchesArray() : []);
11977
+ matches || (matches = []);
12874
11978
  if (isComponentDef(def)) {
12875
11979
  if (ngDevMode) {
12876
11980
  assertTNodeType(tNode, 2 /* TNodeType.Element */, `"${tNode.value}" tags cannot be used as component hosts. ` +
@@ -12928,13 +12032,12 @@ function markAsComponentHost(tView, hostTNode, componentOffset) {
12928
12032
  ngDevMode && assertFirstCreatePass(tView);
12929
12033
  ngDevMode && assertGreaterThan(componentOffset, -1, 'componentOffset must be great than -1');
12930
12034
  hostTNode.componentOffset = componentOffset;
12931
- (tView.components || (tView.components = ngDevMode ? new TViewComponents() : []))
12932
- .push(hostTNode.index);
12035
+ (tView.components || (tView.components = [])).push(hostTNode.index);
12933
12036
  }
12934
12037
  /** Caches local names and their matching directive indices for query and template lookups. */
12935
12038
  function cacheMatchingLocalNames(tNode, localRefs, exportsMap) {
12936
12039
  if (localRefs) {
12937
- const localNames = tNode.localNames = ngDevMode ? new TNodeLocalNames() : [];
12040
+ const localNames = tNode.localNames = [];
12938
12041
  // Local names must be stored in tNode in the same order that localRefs are defined
12939
12042
  // in the template to ensure the data is loaded in the same slots as their refs
12940
12043
  // in the template (for template queries).
@@ -13117,9 +12220,6 @@ function generateInitialInputs(inputs, directiveIndex, attrs) {
13117
12220
  //////////////////////////
13118
12221
  //// ViewContainer & View
13119
12222
  //////////////////////////
13120
- // Not sure why I need to do `any` here but TS complains later.
13121
- const LContainerArray = class LContainer extends Array {
13122
- };
13123
12223
  /**
13124
12224
  * Creates a LContainer, either from a container instruction, or for a ViewContainerRef.
13125
12225
  *
@@ -13132,20 +12232,20 @@ const LContainerArray = class LContainer extends Array {
13132
12232
  */
13133
12233
  function createLContainer(hostNative, currentView, native, tNode) {
13134
12234
  ngDevMode && assertLView(currentView);
13135
- // https://jsperf.com/array-literal-vs-new-array-really
13136
- const lContainer = new (ngDevMode ? LContainerArray : Array)(hostNative, // host native
13137
- true, // Boolean `true` in this position signifies that this is an `LContainer`
13138
- false, // has transplanted views
13139
- currentView, // parent
13140
- null, // next
13141
- 0, // transplanted views to refresh count
13142
- tNode, // t_host
13143
- native, // native,
13144
- null, // view refs
13145
- null);
12235
+ const lContainer = [
12236
+ hostNative,
12237
+ true,
12238
+ false,
12239
+ currentView,
12240
+ null,
12241
+ 0,
12242
+ tNode,
12243
+ native,
12244
+ null,
12245
+ null, // moved views
12246
+ ];
13146
12247
  ngDevMode &&
13147
12248
  assertEqual(lContainer.length, CONTAINER_HEADER_OFFSET, 'Should allocate correct number of slots for LContainer header.');
13148
- ngDevMode && attachLContainerDebug(lContainer);
13149
12249
  return lContainer;
13150
12250
  }
13151
12251
  /**
@@ -13419,10 +12519,10 @@ function storePropertyBindingMetadata(tData, tNode, propertyName, bindingIndex,
13419
12519
  }
13420
12520
  function getOrCreateLViewCleanup(view) {
13421
12521
  // top level variables should not be exported for performance reasons (PERF_NOTES.md)
13422
- return view[CLEANUP] || (view[CLEANUP] = ngDevMode ? new LCleanup() : []);
12522
+ return view[CLEANUP] || (view[CLEANUP] = []);
13423
12523
  }
13424
12524
  function getOrCreateTViewCleanup(tView) {
13425
- return tView.cleanup || (tView.cleanup = ngDevMode ? new TCleanup() : []);
12525
+ return tView.cleanup || (tView.cleanup = []);
13426
12526
  }
13427
12527
  /**
13428
12528
  * There are cases where the sub component's renderer needs to be included
@@ -14034,17 +13134,6 @@ class ComponentFactory extends ComponentFactory$1 {
14034
13134
  return new ComponentRef(this.componentType, component, createElementRef(tElementNode, rootLView), rootLView, tElementNode);
14035
13135
  }
14036
13136
  }
14037
- const componentFactoryResolver = new ComponentFactoryResolver();
14038
- /**
14039
- * Creates a ComponentFactoryResolver and stores it on the injector. Or, if the
14040
- * ComponentFactoryResolver
14041
- * already exists, retrieves the existing ComponentFactoryResolver.
14042
- *
14043
- * @returns The ComponentFactoryResolver instance to use
14044
- */
14045
- function injectComponentFactoryResolver() {
14046
- return componentFactoryResolver;
14047
- }
14048
13137
  /**
14049
13138
  * Represents an instance of a Component created via a {@link ComponentFactory}.
14050
13139
  *
@@ -15805,7 +14894,8 @@ const isObservable = isSubscribable;
15805
14894
  *
15806
14895
  * @param eventName Name of the event
15807
14896
  * @param listenerFn The function to be called when event emits
15808
- * @param useCapture Whether or not to use capture in event listener
14897
+ * @param useCapture Whether or not to use capture in event listener - this argument is a reminder
14898
+ * from the Renderer3 infrastructure and should be removed from the instruction arguments
15809
14899
  * @param eventTargetResolver Function that returns global target information in case this listener
15810
14900
  * should be attached to a global object like window, document or body
15811
14901
  *
@@ -15815,7 +14905,7 @@ function ɵɵlistener(eventName, listenerFn, useCapture, eventTargetResolver) {
15815
14905
  const lView = getLView();
15816
14906
  const tView = getTView();
15817
14907
  const tNode = getCurrentTNode();
15818
- listenerInternal(tView, lView, lView[RENDERER], tNode, eventName, listenerFn, !!useCapture, eventTargetResolver);
14908
+ listenerInternal(tView, lView, lView[RENDERER], tNode, eventName, listenerFn, eventTargetResolver);
15819
14909
  return ɵɵlistener;
15820
14910
  }
15821
14911
  /**
@@ -15845,7 +14935,7 @@ function ɵɵsyntheticHostListener(eventName, listenerFn) {
15845
14935
  const tView = getTView();
15846
14936
  const currentDef = getCurrentDirectiveDef(tView.data);
15847
14937
  const renderer = loadComponentRenderer(currentDef, tNode, lView);
15848
- listenerInternal(tView, lView, renderer, tNode, eventName, listenerFn, false);
14938
+ listenerInternal(tView, lView, renderer, tNode, eventName, listenerFn);
15849
14939
  return ɵɵsyntheticHostListener;
15850
14940
  }
15851
14941
  /**
@@ -15878,7 +14968,7 @@ function findExistingListener(tView, lView, eventName, tNodeIdx) {
15878
14968
  }
15879
14969
  return null;
15880
14970
  }
15881
- function listenerInternal(tView, lView, renderer, tNode, eventName, listenerFn, useCapture, eventTargetResolver) {
14971
+ function listenerInternal(tView, lView, renderer, tNode, eventName, listenerFn, eventTargetResolver) {
15882
14972
  const isTNodeDirectiveHost = isDirectiveHost(tNode);
15883
14973
  const firstCreatePass = tView.firstCreatePass;
15884
14974
  const tCleanup = firstCreatePass && getOrCreateTViewCleanup(tView);
@@ -16629,6 +15719,62 @@ function ɵɵpropertyInterpolateV(propName, values, sanitizer) {
16629
15719
  return ɵɵpropertyInterpolateV;
16630
15720
  }
16631
15721
 
15722
+ /**
15723
+ * @license
15724
+ * Copyright Google LLC All Rights Reserved.
15725
+ *
15726
+ * Use of this source code is governed by an MIT-style license that can be
15727
+ * found in the LICENSE file at https://angular.io/license
15728
+ */
15729
+ function toTStylingRange(prev, next) {
15730
+ ngDevMode && assertNumberInRange(prev, 0, 32767 /* StylingRange.UNSIGNED_MASK */);
15731
+ ngDevMode && assertNumberInRange(next, 0, 32767 /* StylingRange.UNSIGNED_MASK */);
15732
+ return (prev << 17 /* StylingRange.PREV_SHIFT */ | next << 2 /* StylingRange.NEXT_SHIFT */);
15733
+ }
15734
+ function getTStylingRangePrev(tStylingRange) {
15735
+ ngDevMode && assertNumber(tStylingRange, 'expected number');
15736
+ return (tStylingRange >> 17 /* StylingRange.PREV_SHIFT */) & 32767 /* StylingRange.UNSIGNED_MASK */;
15737
+ }
15738
+ function getTStylingRangePrevDuplicate(tStylingRange) {
15739
+ ngDevMode && assertNumber(tStylingRange, 'expected number');
15740
+ return (tStylingRange & 2 /* StylingRange.PREV_DUPLICATE */) ==
15741
+ 2 /* StylingRange.PREV_DUPLICATE */;
15742
+ }
15743
+ function setTStylingRangePrev(tStylingRange, previous) {
15744
+ ngDevMode && assertNumber(tStylingRange, 'expected number');
15745
+ ngDevMode && assertNumberInRange(previous, 0, 32767 /* StylingRange.UNSIGNED_MASK */);
15746
+ return ((tStylingRange & ~4294836224 /* StylingRange.PREV_MASK */) |
15747
+ (previous << 17 /* StylingRange.PREV_SHIFT */));
15748
+ }
15749
+ function setTStylingRangePrevDuplicate(tStylingRange) {
15750
+ ngDevMode && assertNumber(tStylingRange, 'expected number');
15751
+ return (tStylingRange | 2 /* StylingRange.PREV_DUPLICATE */);
15752
+ }
15753
+ function getTStylingRangeNext(tStylingRange) {
15754
+ ngDevMode && assertNumber(tStylingRange, 'expected number');
15755
+ return (tStylingRange & 131068 /* StylingRange.NEXT_MASK */) >> 2 /* StylingRange.NEXT_SHIFT */;
15756
+ }
15757
+ function setTStylingRangeNext(tStylingRange, next) {
15758
+ ngDevMode && assertNumber(tStylingRange, 'expected number');
15759
+ ngDevMode && assertNumberInRange(next, 0, 32767 /* StylingRange.UNSIGNED_MASK */);
15760
+ return ((tStylingRange & ~131068 /* StylingRange.NEXT_MASK */) | //
15761
+ next << 2 /* StylingRange.NEXT_SHIFT */);
15762
+ }
15763
+ function getTStylingRangeNextDuplicate(tStylingRange) {
15764
+ ngDevMode && assertNumber(tStylingRange, 'expected number');
15765
+ return (tStylingRange & 1 /* StylingRange.NEXT_DUPLICATE */) ===
15766
+ 1 /* StylingRange.NEXT_DUPLICATE */;
15767
+ }
15768
+ function setTStylingRangeNextDuplicate(tStylingRange) {
15769
+ ngDevMode && assertNumber(tStylingRange, 'expected number');
15770
+ return (tStylingRange | 1 /* StylingRange.NEXT_DUPLICATE */);
15771
+ }
15772
+ function getTStylingRangeTail(tStylingRange) {
15773
+ ngDevMode && assertNumber(tStylingRange, 'expected number');
15774
+ const next = getTStylingRangeNext(tStylingRange);
15775
+ return next === 0 ? getTStylingRangePrev(tStylingRange) : next;
15776
+ }
15777
+
16632
15778
  /**
16633
15779
  * @license
16634
15780
  * Copyright Google LLC All Rights Reserved.
@@ -20450,6 +19596,46 @@ function loadIcuContainerVisitor() {
20450
19596
  return icuContainerIteratorStart;
20451
19597
  }
20452
19598
 
19599
+ /**
19600
+ * @license
19601
+ * Copyright Google LLC All Rights Reserved.
19602
+ *
19603
+ * Use of this source code is governed by an MIT-style license that can be
19604
+ * found in the LICENSE file at https://angular.io/license
19605
+ */
19606
+ /**
19607
+ * Patch a `debug` property on top of the existing object.
19608
+ *
19609
+ * NOTE: always call this method with `ngDevMode && attachDebugObject(...)`
19610
+ *
19611
+ * @param obj Object to patch
19612
+ * @param debug Value to patch
19613
+ */
19614
+ function attachDebugObject(obj, debug) {
19615
+ if (ngDevMode) {
19616
+ Object.defineProperty(obj, 'debug', { value: debug, enumerable: false });
19617
+ }
19618
+ else {
19619
+ throw new Error('This method should be guarded with `ngDevMode` so that it can be tree shaken in production!');
19620
+ }
19621
+ }
19622
+ /**
19623
+ * Patch a `debug` property getter on top of the existing object.
19624
+ *
19625
+ * NOTE: always call this method with `ngDevMode && attachDebugObject(...)`
19626
+ *
19627
+ * @param obj Object to patch
19628
+ * @param debugGetter Getter returning a value to patch
19629
+ */
19630
+ function attachDebugGetter(obj, debugGetter) {
19631
+ if (ngDevMode) {
19632
+ Object.defineProperty(obj, 'debug', { get: debugGetter, enumerable: false });
19633
+ }
19634
+ else {
19635
+ throw new Error('This method should be guarded with `ngDevMode` so that it can be tree shaken in production!');
19636
+ }
19637
+ }
19638
+
20453
19639
  /**
20454
19640
  * @license
20455
19641
  * Copyright Google LLC All Rights Reserved.
@@ -21205,7 +20391,7 @@ function walkIcuTree(tView, tIcu, lView, sharedUpdateOpCodes, create, remove, up
21205
20391
  ngDevMode &&
21206
20392
  console.warn(`WARNING: ignoring unsafe attribute value ` +
21207
20393
  `${lowerAttrName} on element ${tagName} ` +
21208
- `(see https://g.co/ng/security#xss)`);
20394
+ `(see ${XSS_SECURITY_URL})`);
21209
20395
  }
21210
20396
  }
21211
20397
  else {
@@ -22419,32 +21605,6 @@ function sortListeners(a, b) {
22419
21605
  function isDirectiveDefHack(obj) {
22420
21606
  return obj.type !== undefined && obj.template !== undefined && obj.declaredInputs !== undefined;
22421
21607
  }
22422
- /**
22423
- * Returns the attached `DebugNode` instance for an element in the DOM.
22424
- *
22425
- * @param element DOM element which is owned by an existing component's view.
22426
- */
22427
- function getDebugNode$1(element) {
22428
- if (ngDevMode && !(element instanceof Node)) {
22429
- throw new Error('Expecting instance of DOM Element');
22430
- }
22431
- const lContext = getLContext(element);
22432
- const lView = lContext ? lContext.lView : null;
22433
- if (lView === null) {
22434
- return null;
22435
- }
22436
- const nodeIndex = lContext.nodeIndex;
22437
- if (nodeIndex !== -1) {
22438
- const valueInLView = lView[nodeIndex];
22439
- // this means that value in the lView is a component with its own
22440
- // data. In this situation the TNode is not accessed at the same spot.
22441
- const tNode = isLView(valueInLView) ? valueInLView[T_HOST] : getTNode(lView[TVIEW], nodeIndex);
22442
- ngDevMode &&
22443
- assertEqual(tNode.index, nodeIndex, 'Expecting that TNode at index is same as index');
22444
- return buildDebugNode(tNode, lView);
22445
- }
22446
- return null;
22447
- }
22448
21608
  /**
22449
21609
  * Retrieve the component `LView` from component/element.
22450
21610
  *
@@ -30118,5 +29278,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
30118
29278
  * Generated bundle index. Do not edit.
30119
29279
  */
30120
29280
 
30121
- 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, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, Host, HostBinding, HostListener, INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, Pipe, PlatformRef, Query, QueryList, 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, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, isDevMode, makeEnvironmentProviders, platformCore, reflectComponentType, 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, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, 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, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, detectChanges as ɵdetectChanges, devModeEqual as ɵdevModeEqual, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, 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, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, isBoundToModule as ɵisBoundToModule, isDefaultChangeDetectionStrategy as ɵisDefaultChangeDetectionStrategy, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isListLikeIterable as ɵisListLikeIterable, isObservable as ɵisObservable, isPromise as ɵisPromise, isStandalone as ɵisStandalone, isSubscribable as ɵisSubscribable, ɵivyEnabled, makeDecorator as ɵmakeDecorator, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, publishDefaultGlobalUtils$1 as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, registerLocaleData as ɵregisterLocaleData, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setClassMetadata as ɵsetClassMetadata, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵStandaloneFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcontentQuery, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryRefresh, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵvalidateIframeAttribute, ɵɵviewQuery };
29281
+ 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, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, Host, HostBinding, HostListener, INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, Pipe, PlatformRef, Query, QueryList, 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, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, isDevMode, makeEnvironmentProviders, platformCore, reflectComponentType, 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, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, coerceToBoolean as ɵcoerceToBoolean, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, detectChanges as ɵdetectChanges, devModeEqual as ɵdevModeEqual, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, 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, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, isBoundToModule as ɵisBoundToModule, isDefaultChangeDetectionStrategy as ɵisDefaultChangeDetectionStrategy, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isListLikeIterable as ɵisListLikeIterable, isObservable as ɵisObservable, isPromise as ɵisPromise, isStandalone as ɵisStandalone, isSubscribable as ɵisSubscribable, ɵivyEnabled, makeDecorator as ɵmakeDecorator, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, publishDefaultGlobalUtils$1 as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, registerLocaleData as ɵregisterLocaleData, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setClassMetadata as ɵsetClassMetadata, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵStandaloneFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcontentQuery, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryRefresh, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵvalidateIframeAttribute, ɵɵviewQuery };
30122
29282
  //# sourceMappingURL=core.mjs.map