@angular/core 19.2.16 → 19.2.17

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 (52) hide show
  1. package/event_dispatcher.d-K56StcHr.d.ts +1 -1
  2. package/fesm2022/core.mjs +520 -483
  3. package/fesm2022/core.mjs.map +1 -1
  4. package/fesm2022/primitives/di.mjs +1 -1
  5. package/fesm2022/primitives/di.mjs.map +1 -1
  6. package/fesm2022/primitives/event-dispatch.mjs +1 -1
  7. package/fesm2022/primitives/event-dispatch.mjs.map +1 -1
  8. package/fesm2022/primitives/signals.mjs +1 -1
  9. package/fesm2022/primitives/signals.mjs.map +1 -1
  10. package/fesm2022/rxjs-interop.mjs +1 -1
  11. package/fesm2022/rxjs-interop.mjs.map +1 -1
  12. package/fesm2022/testing.mjs +1 -1
  13. package/fesm2022/testing.mjs.map +1 -1
  14. package/fesm2022/untracked-BKcld_ew.mjs +1 -1
  15. package/fesm2022/untracked-BKcld_ew.mjs.map +1 -1
  16. package/index.d.ts +11 -10
  17. package/navigation_types.d-fAxd92YV.d.ts +1 -1
  18. package/package.json +1 -1
  19. package/primitives/di/index.d.ts +1 -1
  20. package/primitives/event-dispatch/index.d.ts +1 -1
  21. package/primitives/signals/index.d.ts +1 -1
  22. package/rxjs-interop/index.d.ts +1 -1
  23. package/schematics/bundles/add-bootstrap-context-to-server-main.cjs +2 -2
  24. package/schematics/bundles/{apply_import_manager-DF0BUe6N.cjs → apply_import_manager-BJETGeOK.cjs} +3 -3
  25. package/schematics/bundles/{change_tracker-BfH3nBIf.cjs → change_tracker-DCYvDUoh.cjs} +2 -2
  26. package/schematics/bundles/{checker-BwV9MjSQ.cjs → checker-3NZgzGls.cjs} +103 -69
  27. package/schematics/bundles/cleanup-unused-imports.cjs +5 -5
  28. package/schematics/bundles/compiler_host-CAfDJO3W.cjs +1 -1
  29. package/schematics/bundles/control-flow-migration.cjs +3 -3
  30. package/schematics/bundles/explicit-standalone-flag.cjs +3 -3
  31. package/schematics/bundles/imports-CIX-JgAN.cjs +1 -1
  32. package/schematics/bundles/{index-B6p5mHIY.cjs → index-CVdD79i5.cjs} +4 -4
  33. package/schematics/bundles/{index-BnJH1Hc7.cjs → index-CZ9tBi9p.cjs} +12 -12
  34. package/schematics/bundles/inject-migration.cjs +3 -3
  35. package/schematics/bundles/leading_space-D9nQ8UQC.cjs +1 -1
  36. package/schematics/bundles/{migrate_ts_type_references-DQe6JtwN.cjs → migrate_ts_type_references-CvSO8ojl.cjs} +5 -5
  37. package/schematics/bundles/ng_decorators-B5HCqr20.cjs +1 -1
  38. package/schematics/bundles/nodes-B16H9JUd.cjs +1 -1
  39. package/schematics/bundles/output-migration.cjs +6 -6
  40. package/schematics/bundles/pending-tasks.cjs +3 -3
  41. package/schematics/bundles/{project_paths-DY3SIODd.cjs → project_paths-iOxGOuAR.cjs} +3 -3
  42. package/schematics/bundles/project_tsconfig_paths-CDVxT6Ov.cjs +1 -1
  43. package/schematics/bundles/property_name-BBwFuqMe.cjs +1 -1
  44. package/schematics/bundles/provide-initializer.cjs +3 -3
  45. package/schematics/bundles/route-lazy-loading.cjs +3 -3
  46. package/schematics/bundles/self-closing-tags-migration.cjs +4 -4
  47. package/schematics/bundles/signal-input-migration.cjs +7 -7
  48. package/schematics/bundles/signal-queries-migration.cjs +7 -7
  49. package/schematics/bundles/signals.cjs +7 -7
  50. package/schematics/bundles/standalone-migration.cjs +4 -4
  51. package/testing/index.d.ts +1 -1
  52. package/weak_ref.d-DWHPG08n.d.ts +1 -1
package/fesm2022/core.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v19.2.16
2
+ * @license Angular v19.2.17
3
3
  * (c) 2010-2025 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -10162,6 +10162,295 @@ var ViewEncapsulation;
10162
10162
  ViewEncapsulation[ViewEncapsulation["ShadowDom"] = 3] = "ShadowDom";
10163
10163
  })(ViewEncapsulation || (ViewEncapsulation = {}));
10164
10164
 
10165
+ /**
10166
+ * Defines a schema that allows an NgModule to contain the following:
10167
+ * - Non-Angular elements named with dash case (`-`).
10168
+ * - Element properties named with dash case (`-`).
10169
+ * Dash case is the naming convention for custom elements.
10170
+ *
10171
+ * @publicApi
10172
+ */
10173
+ const CUSTOM_ELEMENTS_SCHEMA = {
10174
+ name: 'custom-elements',
10175
+ };
10176
+ /**
10177
+ * Defines a schema that allows any property on any element.
10178
+ *
10179
+ * This schema allows you to ignore the errors related to any unknown elements or properties in a
10180
+ * template. The usage of this schema is generally discouraged because it prevents useful validation
10181
+ * and may hide real errors in your template. Consider using the `CUSTOM_ELEMENTS_SCHEMA` instead.
10182
+ *
10183
+ * @publicApi
10184
+ */
10185
+ const NO_ERRORS_SCHEMA = {
10186
+ name: 'no-errors-schema',
10187
+ };
10188
+
10189
+ let shouldThrowErrorOnUnknownElement = false;
10190
+ /**
10191
+ * Sets a strict mode for JIT-compiled components to throw an error on unknown elements,
10192
+ * instead of just logging the error.
10193
+ * (for AOT-compiled ones this check happens at build time).
10194
+ */
10195
+ function ɵsetUnknownElementStrictMode(shouldThrow) {
10196
+ shouldThrowErrorOnUnknownElement = shouldThrow;
10197
+ }
10198
+ /**
10199
+ * Gets the current value of the strict mode.
10200
+ */
10201
+ function ɵgetUnknownElementStrictMode() {
10202
+ return shouldThrowErrorOnUnknownElement;
10203
+ }
10204
+ let shouldThrowErrorOnUnknownProperty = false;
10205
+ /**
10206
+ * Sets a strict mode for JIT-compiled components to throw an error on unknown properties,
10207
+ * instead of just logging the error.
10208
+ * (for AOT-compiled ones this check happens at build time).
10209
+ */
10210
+ function ɵsetUnknownPropertyStrictMode(shouldThrow) {
10211
+ shouldThrowErrorOnUnknownProperty = shouldThrow;
10212
+ }
10213
+ /**
10214
+ * Gets the current value of the strict mode.
10215
+ */
10216
+ function ɵgetUnknownPropertyStrictMode() {
10217
+ return shouldThrowErrorOnUnknownProperty;
10218
+ }
10219
+ /**
10220
+ * Validates that the element is known at runtime and produces
10221
+ * an error if it's not the case.
10222
+ * This check is relevant for JIT-compiled components (for AOT-compiled
10223
+ * ones this check happens at build time).
10224
+ *
10225
+ * The element is considered known if either:
10226
+ * - it's a known HTML element
10227
+ * - it's a known custom element
10228
+ * - the element matches any directive
10229
+ * - the element is allowed by one of the schemas
10230
+ *
10231
+ * @param element Element to validate
10232
+ * @param lView An `LView` that represents a current component that is being rendered
10233
+ * @param tagName Name of the tag to check
10234
+ * @param schemas Array of schemas
10235
+ * @param hasDirectives Boolean indicating that the element matches any directive
10236
+ */
10237
+ function validateElementIsKnown(element, lView, tagName, schemas, hasDirectives) {
10238
+ // If `schemas` is set to `null`, that's an indication that this Component was compiled in AOT
10239
+ // mode where this check happens at compile time. In JIT mode, `schemas` is always present and
10240
+ // defined as an array (as an empty array in case `schemas` field is not defined) and we should
10241
+ // execute the check below.
10242
+ if (schemas === null)
10243
+ return;
10244
+ // If the element matches any directive, it's considered as valid.
10245
+ if (!hasDirectives && tagName !== null) {
10246
+ // The element is unknown if it's an instance of HTMLUnknownElement, or it isn't registered
10247
+ // as a custom element. Note that unknown elements with a dash in their name won't be instances
10248
+ // of HTMLUnknownElement in browsers that support web components.
10249
+ const isUnknown =
10250
+ // Note that we can't check for `typeof HTMLUnknownElement === 'function'` because
10251
+ // Domino doesn't expose HTMLUnknownElement globally.
10252
+ (typeof HTMLUnknownElement !== 'undefined' &&
10253
+ HTMLUnknownElement &&
10254
+ element instanceof HTMLUnknownElement) ||
10255
+ (typeof customElements !== 'undefined' &&
10256
+ tagName.indexOf('-') > -1 &&
10257
+ !customElements.get(tagName));
10258
+ if (isUnknown && !matchingSchemas(schemas, tagName)) {
10259
+ const isHostStandalone = isHostComponentStandalone(lView);
10260
+ const templateLocation = getTemplateLocationDetails(lView);
10261
+ const schemas = `'${isHostStandalone ? '@Component' : '@NgModule'}.schemas'`;
10262
+ let message = `'${tagName}' is not a known element${templateLocation}:\n`;
10263
+ message += `1. If '${tagName}' is an Angular component, then verify that it is ${isHostStandalone
10264
+ ? "included in the '@Component.imports' of this component"
10265
+ : 'a part of an @NgModule where this component is declared'}.\n`;
10266
+ if (tagName && tagName.indexOf('-') > -1) {
10267
+ message += `2. If '${tagName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the ${schemas} of this component to suppress this message.`;
10268
+ }
10269
+ else {
10270
+ message += `2. To allow any element add 'NO_ERRORS_SCHEMA' to the ${schemas} of this component.`;
10271
+ }
10272
+ if (shouldThrowErrorOnUnknownElement) {
10273
+ throw new RuntimeError(304 /* RuntimeErrorCode.UNKNOWN_ELEMENT */, message);
10274
+ }
10275
+ else {
10276
+ console.error(formatRuntimeError(304 /* RuntimeErrorCode.UNKNOWN_ELEMENT */, message));
10277
+ }
10278
+ }
10279
+ }
10280
+ }
10281
+ /**
10282
+ * Validates that the property of the element is known at runtime and returns
10283
+ * false if it's not the case.
10284
+ * This check is relevant for JIT-compiled components (for AOT-compiled
10285
+ * ones this check happens at build time).
10286
+ *
10287
+ * The property is considered known if either:
10288
+ * - it's a known property of the element
10289
+ * - the element is allowed by one of the schemas
10290
+ * - the property is used for animations
10291
+ *
10292
+ * @param element Element to validate
10293
+ * @param propName Name of the property to check
10294
+ * @param tagName Name of the tag hosting the property
10295
+ * @param schemas Array of schemas
10296
+ */
10297
+ function isPropertyValid(element, propName, tagName, schemas) {
10298
+ // If `schemas` is set to `null`, that's an indication that this Component was compiled in AOT
10299
+ // mode where this check happens at compile time. In JIT mode, `schemas` is always present and
10300
+ // defined as an array (as an empty array in case `schemas` field is not defined) and we should
10301
+ // execute the check below.
10302
+ if (schemas === null)
10303
+ return true;
10304
+ // The property is considered valid if the element matches the schema, it exists on the element,
10305
+ // or it is synthetic.
10306
+ if (matchingSchemas(schemas, tagName) || propName in element || isAnimationProp(propName)) {
10307
+ return true;
10308
+ }
10309
+ // Note: `typeof Node` returns 'function' in most browsers, but is undefined with domino.
10310
+ return typeof Node === 'undefined' || Node === null || !(element instanceof Node);
10311
+ }
10312
+ /**
10313
+ * Logs or throws an error that a property is not supported on an element.
10314
+ *
10315
+ * @param propName Name of the invalid property
10316
+ * @param tagName Name of the tag hosting the property
10317
+ * @param nodeType Type of the node hosting the property
10318
+ * @param lView An `LView` that represents a current component
10319
+ */
10320
+ function handleUnknownPropertyError(propName, tagName, nodeType, lView) {
10321
+ // Special-case a situation when a structural directive is applied to
10322
+ // an `<ng-template>` element, for example: `<ng-template *ngIf="true">`.
10323
+ // In this case the compiler generates the `ɵɵtemplate` instruction with
10324
+ // the `null` as the tagName. The directive matching logic at runtime relies
10325
+ // on this effect (see `isInlineTemplate`), thus using the 'ng-template' as
10326
+ // a default value of the `tNode.value` is not feasible at this moment.
10327
+ if (!tagName && nodeType === 4 /* TNodeType.Container */) {
10328
+ tagName = 'ng-template';
10329
+ }
10330
+ const isHostStandalone = isHostComponentStandalone(lView);
10331
+ const templateLocation = getTemplateLocationDetails(lView);
10332
+ let message = `Can't bind to '${propName}' since it isn't a known property of '${tagName}'${templateLocation}.`;
10333
+ const schemas = `'${isHostStandalone ? '@Component' : '@NgModule'}.schemas'`;
10334
+ const importLocation = isHostStandalone
10335
+ ? "included in the '@Component.imports' of this component"
10336
+ : 'a part of an @NgModule where this component is declared';
10337
+ if (KNOWN_CONTROL_FLOW_DIRECTIVES.has(propName)) {
10338
+ // Most likely this is a control flow directive (such as `*ngIf`) used in
10339
+ // a template, but the directive or the `CommonModule` is not imported.
10340
+ const correspondingImport = KNOWN_CONTROL_FLOW_DIRECTIVES.get(propName);
10341
+ message +=
10342
+ `\nIf the '${propName}' is an Angular control flow directive, ` +
10343
+ `please make sure that either the '${correspondingImport}' directive or the 'CommonModule' is ${importLocation}.`;
10344
+ }
10345
+ else {
10346
+ // May be an Angular component, which is not imported/declared?
10347
+ message +=
10348
+ `\n1. If '${tagName}' is an Angular component and it has the ` +
10349
+ `'${propName}' input, then verify that it is ${importLocation}.`;
10350
+ // May be a Web Component?
10351
+ if (tagName && tagName.indexOf('-') > -1) {
10352
+ message +=
10353
+ `\n2. If '${tagName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' ` +
10354
+ `to the ${schemas} of this component to suppress this message.`;
10355
+ message +=
10356
+ `\n3. To allow any property add 'NO_ERRORS_SCHEMA' to ` +
10357
+ `the ${schemas} of this component.`;
10358
+ }
10359
+ else {
10360
+ // If it's expected, the error can be suppressed by the `NO_ERRORS_SCHEMA` schema.
10361
+ message +=
10362
+ `\n2. To allow any property add 'NO_ERRORS_SCHEMA' to ` +
10363
+ `the ${schemas} of this component.`;
10364
+ }
10365
+ }
10366
+ reportUnknownPropertyError(message);
10367
+ }
10368
+ function reportUnknownPropertyError(message) {
10369
+ if (shouldThrowErrorOnUnknownProperty) {
10370
+ throw new RuntimeError(303 /* RuntimeErrorCode.UNKNOWN_BINDING */, message);
10371
+ }
10372
+ else {
10373
+ console.error(formatRuntimeError(303 /* RuntimeErrorCode.UNKNOWN_BINDING */, message));
10374
+ }
10375
+ }
10376
+ /**
10377
+ * WARNING: this is a **dev-mode only** function (thus should always be guarded by the `ngDevMode`)
10378
+ * and must **not** be used in production bundles. The function makes megamorphic reads, which might
10379
+ * be too slow for production mode and also it relies on the constructor function being available.
10380
+ *
10381
+ * Gets a reference to the host component def (where a current component is declared).
10382
+ *
10383
+ * @param lView An `LView` that represents a current component that is being rendered.
10384
+ */
10385
+ function getDeclarationComponentDef(lView) {
10386
+ !ngDevMode && throwError('Must never be called in production mode');
10387
+ const declarationLView = lView[DECLARATION_COMPONENT_VIEW];
10388
+ const context = declarationLView[CONTEXT];
10389
+ // Unable to obtain a context.
10390
+ if (!context)
10391
+ return null;
10392
+ return context.constructor ? getComponentDef(context.constructor) : null;
10393
+ }
10394
+ /**
10395
+ * WARNING: this is a **dev-mode only** function (thus should always be guarded by the `ngDevMode`)
10396
+ * and must **not** be used in production bundles. The function makes megamorphic reads, which might
10397
+ * be too slow for production mode.
10398
+ *
10399
+ * Checks if the current component is declared inside of a standalone component template.
10400
+ *
10401
+ * @param lView An `LView` that represents a current component that is being rendered.
10402
+ */
10403
+ function isHostComponentStandalone(lView) {
10404
+ !ngDevMode && throwError('Must never be called in production mode');
10405
+ const componentDef = getDeclarationComponentDef(lView);
10406
+ // Treat host component as non-standalone if we can't obtain the def.
10407
+ return !!componentDef?.standalone;
10408
+ }
10409
+ /**
10410
+ * WARNING: this is a **dev-mode only** function (thus should always be guarded by the `ngDevMode`)
10411
+ * and must **not** be used in production bundles. The function makes megamorphic reads, which might
10412
+ * be too slow for production mode.
10413
+ *
10414
+ * Constructs a string describing the location of the host component template. The function is used
10415
+ * in dev mode to produce error messages.
10416
+ *
10417
+ * @param lView An `LView` that represents a current component that is being rendered.
10418
+ */
10419
+ function getTemplateLocationDetails(lView) {
10420
+ !ngDevMode && throwError('Must never be called in production mode');
10421
+ const hostComponentDef = getDeclarationComponentDef(lView);
10422
+ const componentClassName = hostComponentDef?.type?.name;
10423
+ return componentClassName ? ` (used in the '${componentClassName}' component template)` : '';
10424
+ }
10425
+ /**
10426
+ * The set of known control flow directives and their corresponding imports.
10427
+ * We use this set to produce a more precises error message with a note
10428
+ * that the `CommonModule` should also be included.
10429
+ */
10430
+ const KNOWN_CONTROL_FLOW_DIRECTIVES = new Map([
10431
+ ['ngIf', 'NgIf'],
10432
+ ['ngFor', 'NgFor'],
10433
+ ['ngSwitchCase', 'NgSwitchCase'],
10434
+ ['ngSwitchDefault', 'NgSwitchDefault'],
10435
+ ]);
10436
+ /**
10437
+ * Returns true if the tag name is allowed by specified schemas.
10438
+ * @param schemas Array of schemas
10439
+ * @param tagName Name of the tag
10440
+ */
10441
+ function matchingSchemas(schemas, tagName) {
10442
+ if (schemas !== null) {
10443
+ for (let i = 0; i < schemas.length; i++) {
10444
+ const schema = schemas[i];
10445
+ if (schema === NO_ERRORS_SCHEMA ||
10446
+ (schema === CUSTOM_ELEMENTS_SCHEMA && tagName && tagName.indexOf('-') > -1)) {
10447
+ return true;
10448
+ }
10449
+ }
10450
+ }
10451
+ return false;
10452
+ }
10453
+
10165
10454
  /**
10166
10455
  * @fileoverview
10167
10456
  * A module to facilitate use of a Trusted Types policy internally within
@@ -10805,6 +11094,186 @@ function isTemplateElement(el) {
10805
11094
  return el.nodeType === Node.ELEMENT_NODE && el.nodeName === 'TEMPLATE';
10806
11095
  }
10807
11096
 
11097
+ /**
11098
+ * Disallowed strings in the comment.
11099
+ *
11100
+ * see: https://html.spec.whatwg.org/multipage/syntax.html#comments
11101
+ */
11102
+ const COMMENT_DISALLOWED = /^>|^->|<!--|-->|--!>|<!-$/g;
11103
+ /**
11104
+ * Delimiter in the disallowed strings which needs to be wrapped with zero with character.
11105
+ */
11106
+ const COMMENT_DELIMITER = /(<|>)/g;
11107
+ const COMMENT_DELIMITER_ESCAPED = '\u200B$1\u200B';
11108
+ /**
11109
+ * Escape the content of comment strings so that it can be safely inserted into a comment node.
11110
+ *
11111
+ * The issue is that HTML does not specify any way to escape comment end text inside the comment.
11112
+ * Consider: `<!-- The way you close a comment is with ">", and "->" at the beginning or by "-->" or
11113
+ * "--!>" at the end. -->`. Above the `"-->"` is meant to be text not an end to the comment. This
11114
+ * can be created programmatically through DOM APIs. (`<!--` are also disallowed.)
11115
+ *
11116
+ * see: https://html.spec.whatwg.org/multipage/syntax.html#comments
11117
+ *
11118
+ * ```ts
11119
+ * div.innerHTML = div.innerHTML
11120
+ * ```
11121
+ *
11122
+ * One would expect that the above code would be safe to do, but it turns out that because comment
11123
+ * text is not escaped, the comment may contain text which will prematurely close the comment
11124
+ * opening up the application for XSS attack. (In SSR we programmatically create comment nodes which
11125
+ * may contain such text and expect them to be safe.)
11126
+ *
11127
+ * This function escapes the comment text by looking for comment delimiters (`<` and `>`) and
11128
+ * surrounding them with `_>_` where the `_` is a zero width space `\u200B`. The result is that if a
11129
+ * comment contains any of the comment start/end delimiters (such as `<!--`, `-->` or `--!>`) the
11130
+ * text it will render normally but it will not cause the HTML parser to close/open the comment.
11131
+ *
11132
+ * @param value text to make safe for comment node by escaping the comment open/close character
11133
+ * sequence.
11134
+ */
11135
+ function escapeCommentText(value) {
11136
+ return value.replace(COMMENT_DISALLOWED, (text) => text.replace(COMMENT_DELIMITER, COMMENT_DELIMITER_ESCAPED));
11137
+ }
11138
+
11139
+ function createTextNode(renderer, value) {
11140
+ ngDevMode && ngDevMode.rendererCreateTextNode++;
11141
+ ngDevMode && ngDevMode.rendererSetText++;
11142
+ return renderer.createText(value);
11143
+ }
11144
+ function updateTextNode(renderer, rNode, value) {
11145
+ ngDevMode && ngDevMode.rendererSetText++;
11146
+ renderer.setValue(rNode, value);
11147
+ }
11148
+ function createCommentNode(renderer, value) {
11149
+ ngDevMode && ngDevMode.rendererCreateComment++;
11150
+ return renderer.createComment(escapeCommentText(value));
11151
+ }
11152
+ /**
11153
+ * Creates a native element from a tag name, using a renderer.
11154
+ * @param renderer A renderer to use
11155
+ * @param name the tag name
11156
+ * @param namespace Optional namespace for element.
11157
+ * @returns the element created
11158
+ */
11159
+ function createElementNode(renderer, name, namespace) {
11160
+ ngDevMode && ngDevMode.rendererCreateElement++;
11161
+ return renderer.createElement(name, namespace);
11162
+ }
11163
+ /**
11164
+ * Inserts a native node before another native node for a given parent.
11165
+ * This is a utility function that can be used when native nodes were determined.
11166
+ */
11167
+ function nativeInsertBefore(renderer, parent, child, beforeNode, isMove) {
11168
+ ngDevMode && ngDevMode.rendererInsertBefore++;
11169
+ renderer.insertBefore(parent, child, beforeNode, isMove);
11170
+ }
11171
+ function nativeAppendChild(renderer, parent, child) {
11172
+ ngDevMode && ngDevMode.rendererAppendChild++;
11173
+ ngDevMode && assertDefined(parent, 'parent node must be defined');
11174
+ renderer.appendChild(parent, child);
11175
+ }
11176
+ function nativeAppendOrInsertBefore(renderer, parent, child, beforeNode, isMove) {
11177
+ if (beforeNode !== null) {
11178
+ nativeInsertBefore(renderer, parent, child, beforeNode, isMove);
11179
+ }
11180
+ else {
11181
+ nativeAppendChild(renderer, parent, child);
11182
+ }
11183
+ }
11184
+ /**
11185
+ * Removes a native node itself using a given renderer. To remove the node we are looking up its
11186
+ * parent from the native tree as not all platforms / browsers support the equivalent of
11187
+ * node.remove().
11188
+ *
11189
+ * @param renderer A renderer to be used
11190
+ * @param rNode The native node that should be removed
11191
+ * @param isHostElement A flag indicating if a node to be removed is a host of a component.
11192
+ */
11193
+ function nativeRemoveNode(renderer, rNode, isHostElement) {
11194
+ ngDevMode && ngDevMode.rendererRemoveNode++;
11195
+ renderer.removeChild(null, rNode, isHostElement);
11196
+ }
11197
+ /**
11198
+ * Clears the contents of a given RElement.
11199
+ *
11200
+ * @param rElement the native RElement to be cleared
11201
+ */
11202
+ function clearElementContents(rElement) {
11203
+ rElement.textContent = '';
11204
+ }
11205
+ /**
11206
+ * Write `cssText` to `RElement`.
11207
+ *
11208
+ * This function does direct write without any reconciliation. Used for writing initial values, so
11209
+ * that static styling values do not pull in the style parser.
11210
+ *
11211
+ * @param renderer Renderer to use
11212
+ * @param element The element which needs to be updated.
11213
+ * @param newValue The new class list to write.
11214
+ */
11215
+ function writeDirectStyle(renderer, element, newValue) {
11216
+ ngDevMode && assertString(newValue, "'newValue' should be a string");
11217
+ renderer.setAttribute(element, 'style', newValue);
11218
+ ngDevMode && ngDevMode.rendererSetStyle++;
11219
+ }
11220
+ /**
11221
+ * Write `className` to `RElement`.
11222
+ *
11223
+ * This function does direct write without any reconciliation. Used for writing initial values, so
11224
+ * that static styling values do not pull in the style parser.
11225
+ *
11226
+ * @param renderer Renderer to use
11227
+ * @param element The element which needs to be updated.
11228
+ * @param newValue The new class list to write.
11229
+ */
11230
+ function writeDirectClass(renderer, element, newValue) {
11231
+ ngDevMode && assertString(newValue, "'newValue' should be a string");
11232
+ if (newValue === '') {
11233
+ // There are tests in `google3` which expect `element.getAttribute('class')` to be `null`.
11234
+ renderer.removeAttribute(element, 'class');
11235
+ }
11236
+ else {
11237
+ renderer.setAttribute(element, 'class', newValue);
11238
+ }
11239
+ ngDevMode && ngDevMode.rendererSetClassName++;
11240
+ }
11241
+ /** Sets up the static DOM attributes on an `RNode`. */
11242
+ function setupStaticAttributes(renderer, element, tNode) {
11243
+ const { mergedAttrs, classes, styles } = tNode;
11244
+ if (mergedAttrs !== null) {
11245
+ setUpAttributes(renderer, element, mergedAttrs);
11246
+ }
11247
+ if (classes !== null) {
11248
+ writeDirectClass(renderer, element, classes);
11249
+ }
11250
+ if (styles !== null) {
11251
+ writeDirectStyle(renderer, element, styles);
11252
+ }
11253
+ }
11254
+
11255
+ /**
11256
+ * Enforces security by neutralizing an `<iframe>` if a security-sensitive attribute is set.
11257
+ *
11258
+ * This function is invoked at runtime when a security-sensitive attribute is bound to an `<iframe>`.
11259
+ * It clears the `src` and `srcdoc` attributes and removes the `<iframe>` from the DOM to prevent
11260
+ * potential security risks.
11261
+ *
11262
+ * @see [SECURITY_SCHEMA](../../../compiler/src/schema/dom_security_schema.ts) for the full list
11263
+ * of such attributes.
11264
+ *
11265
+ * @codeGenApi
11266
+ */
11267
+ function enforceIframeSecurity(iframe) {
11268
+ const lView = getLView();
11269
+ // Unset previously applied `src` and `srcdoc` if we come across a situation when
11270
+ // a security-sensitive attribute is set later via an attribute/property binding.
11271
+ iframe.src = '';
11272
+ iframe.srcdoc = trustedHTMLFromString('');
11273
+ // Also remove the <iframe> from the document.
11274
+ nativeRemoveNode(lView[RENDERER], iframe);
11275
+ }
11276
+
10808
11277
  /**
10809
11278
  * A SecurityContext marks a location that has dangerous security implications, e.g. a DOM property
10810
11279
  * like `innerHTML` that could cause Cross Site Scripting (XSS) security bugs when improperly
@@ -11046,47 +11515,55 @@ function getSanitizer() {
11046
11515
  const lView = getLView();
11047
11516
  return lView && lView[ENVIRONMENT].sanitizer;
11048
11517
  }
11049
-
11518
+ const attributeName = new Set(['attributename']);
11519
+ /**
11520
+ * @remarks Keep this in sync with DOM Security Schema.
11521
+ * @see [SECURITY_SCHEMA](../../../compiler/src/schema/dom_security_schema.ts)
11522
+ */
11523
+ const SECURITY_SENSITIVE_ELEMENTS = {
11524
+ 'iframe': new Set([
11525
+ 'sandbox',
11526
+ 'allow',
11527
+ 'allowfullscreen',
11528
+ 'referrerpolicy',
11529
+ 'csp',
11530
+ 'fetchpriority',
11531
+ ]),
11532
+ 'animate': attributeName,
11533
+ 'set': attributeName,
11534
+ 'animatemotion': attributeName,
11535
+ 'animatetransform': attributeName,
11536
+ };
11050
11537
  /**
11051
- * Disallowed strings in the comment.
11538
+ * Validates that the attribute binding is safe to use.
11052
11539
  *
11053
- * see: https://html.spec.whatwg.org/multipage/syntax.html#comments
11054
- */
11055
- const COMMENT_DISALLOWED = /^>|^->|<!--|-->|--!>|<!-$/g;
11056
- /**
11057
- * Delimiter in the disallowed strings which needs to be wrapped with zero with character.
11540
+ * @param value The value of the attribute.
11541
+ * @param tagName The name of the tag.
11542
+ * @param attributeName The name of the attribute.
11058
11543
  */
11059
- const COMMENT_DELIMITER = /(<|>)/g;
11060
- const COMMENT_DELIMITER_ESCAPED = '\u200B$1\u200B';
11061
- /**
11062
- * Escape the content of comment strings so that it can be safely inserted into a comment node.
11063
- *
11064
- * The issue is that HTML does not specify any way to escape comment end text inside the comment.
11065
- * Consider: `<!-- The way you close a comment is with ">", and "->" at the beginning or by "-->" or
11066
- * "--!>" at the end. -->`. Above the `"-->"` is meant to be text not an end to the comment. This
11067
- * can be created programmatically through DOM APIs. (`<!--` are also disallowed.)
11068
- *
11069
- * see: https://html.spec.whatwg.org/multipage/syntax.html#comments
11070
- *
11071
- * ```ts
11072
- * div.innerHTML = div.innerHTML
11073
- * ```
11074
- *
11075
- * One would expect that the above code would be safe to do, but it turns out that because comment
11076
- * text is not escaped, the comment may contain text which will prematurely close the comment
11077
- * opening up the application for XSS attack. (In SSR we programmatically create comment nodes which
11078
- * may contain such text and expect them to be safe.)
11079
- *
11080
- * This function escapes the comment text by looking for comment delimiters (`<` and `>`) and
11081
- * surrounding them with `_>_` where the `_` is a zero width space `\u200B`. The result is that if a
11082
- * comment contains any of the comment start/end delimiters (such as `<!--`, `-->` or `--!>`) the
11083
- * text it will render normally but it will not cause the HTML parser to close/open the comment.
11084
- *
11085
- * @param value text to make safe for comment node by escaping the comment open/close character
11086
- * sequence.
11087
- */
11088
- function escapeCommentText(value) {
11089
- return value.replace(COMMENT_DISALLOWED, (text) => text.replace(COMMENT_DELIMITER, COMMENT_DELIMITER_ESCAPED));
11544
+ function ɵɵvalidateAttribute(value, tagName, attributeName) {
11545
+ const lowerCaseTagName = tagName.toLowerCase();
11546
+ const lowerCaseAttrName = attributeName.toLowerCase();
11547
+ if (!SECURITY_SENSITIVE_ELEMENTS[lowerCaseTagName]?.has(lowerCaseAttrName)) {
11548
+ return value;
11549
+ }
11550
+ const tNode = getSelectedTNode();
11551
+ if (tNode.type !== 2 /* TNodeType.Element */) {
11552
+ return value;
11553
+ }
11554
+ const lView = getLView();
11555
+ if (lowerCaseTagName === 'iframe') {
11556
+ const element = getNativeByTNode(tNode, lView);
11557
+ enforceIframeSecurity(element);
11558
+ }
11559
+ const errorMessage = ngDevMode &&
11560
+ `Angular has detected that the \`${attributeName}\` was applied ` +
11561
+ `as a binding to the <${tagName}> element${getTemplateLocationDetails(lView)}. ` +
11562
+ `For security reasons, the \`${attributeName}\` can be set on the <${tagName}> element ` +
11563
+ `as a static attribute only. \n` +
11564
+ `To fix this, switch the \`${attributeName}\` binding to a static attribute ` +
11565
+ `in a template or in host bindings section.`;
11566
+ throw new RuntimeError(-910 /* RuntimeErrorCode.UNSAFE_ATTRIBUTE_BINDING */, errorMessage);
11090
11567
  }
11091
11568
 
11092
11569
  function normalizeDebugBindingName(name) {
@@ -11108,295 +11585,6 @@ function normalizeDebugBindingValue(value) {
11108
11585
  }
11109
11586
  }
11110
11587
 
11111
- /**
11112
- * Defines a schema that allows an NgModule to contain the following:
11113
- * - Non-Angular elements named with dash case (`-`).
11114
- * - Element properties named with dash case (`-`).
11115
- * Dash case is the naming convention for custom elements.
11116
- *
11117
- * @publicApi
11118
- */
11119
- const CUSTOM_ELEMENTS_SCHEMA = {
11120
- name: 'custom-elements',
11121
- };
11122
- /**
11123
- * Defines a schema that allows any property on any element.
11124
- *
11125
- * This schema allows you to ignore the errors related to any unknown elements or properties in a
11126
- * template. The usage of this schema is generally discouraged because it prevents useful validation
11127
- * and may hide real errors in your template. Consider using the `CUSTOM_ELEMENTS_SCHEMA` instead.
11128
- *
11129
- * @publicApi
11130
- */
11131
- const NO_ERRORS_SCHEMA = {
11132
- name: 'no-errors-schema',
11133
- };
11134
-
11135
- let shouldThrowErrorOnUnknownElement = false;
11136
- /**
11137
- * Sets a strict mode for JIT-compiled components to throw an error on unknown elements,
11138
- * instead of just logging the error.
11139
- * (for AOT-compiled ones this check happens at build time).
11140
- */
11141
- function ɵsetUnknownElementStrictMode(shouldThrow) {
11142
- shouldThrowErrorOnUnknownElement = shouldThrow;
11143
- }
11144
- /**
11145
- * Gets the current value of the strict mode.
11146
- */
11147
- function ɵgetUnknownElementStrictMode() {
11148
- return shouldThrowErrorOnUnknownElement;
11149
- }
11150
- let shouldThrowErrorOnUnknownProperty = false;
11151
- /**
11152
- * Sets a strict mode for JIT-compiled components to throw an error on unknown properties,
11153
- * instead of just logging the error.
11154
- * (for AOT-compiled ones this check happens at build time).
11155
- */
11156
- function ɵsetUnknownPropertyStrictMode(shouldThrow) {
11157
- shouldThrowErrorOnUnknownProperty = shouldThrow;
11158
- }
11159
- /**
11160
- * Gets the current value of the strict mode.
11161
- */
11162
- function ɵgetUnknownPropertyStrictMode() {
11163
- return shouldThrowErrorOnUnknownProperty;
11164
- }
11165
- /**
11166
- * Validates that the element is known at runtime and produces
11167
- * an error if it's not the case.
11168
- * This check is relevant for JIT-compiled components (for AOT-compiled
11169
- * ones this check happens at build time).
11170
- *
11171
- * The element is considered known if either:
11172
- * - it's a known HTML element
11173
- * - it's a known custom element
11174
- * - the element matches any directive
11175
- * - the element is allowed by one of the schemas
11176
- *
11177
- * @param element Element to validate
11178
- * @param lView An `LView` that represents a current component that is being rendered
11179
- * @param tagName Name of the tag to check
11180
- * @param schemas Array of schemas
11181
- * @param hasDirectives Boolean indicating that the element matches any directive
11182
- */
11183
- function validateElementIsKnown(element, lView, tagName, schemas, hasDirectives) {
11184
- // If `schemas` is set to `null`, that's an indication that this Component was compiled in AOT
11185
- // mode where this check happens at compile time. In JIT mode, `schemas` is always present and
11186
- // defined as an array (as an empty array in case `schemas` field is not defined) and we should
11187
- // execute the check below.
11188
- if (schemas === null)
11189
- return;
11190
- // If the element matches any directive, it's considered as valid.
11191
- if (!hasDirectives && tagName !== null) {
11192
- // The element is unknown if it's an instance of HTMLUnknownElement, or it isn't registered
11193
- // as a custom element. Note that unknown elements with a dash in their name won't be instances
11194
- // of HTMLUnknownElement in browsers that support web components.
11195
- const isUnknown =
11196
- // Note that we can't check for `typeof HTMLUnknownElement === 'function'` because
11197
- // Domino doesn't expose HTMLUnknownElement globally.
11198
- (typeof HTMLUnknownElement !== 'undefined' &&
11199
- HTMLUnknownElement &&
11200
- element instanceof HTMLUnknownElement) ||
11201
- (typeof customElements !== 'undefined' &&
11202
- tagName.indexOf('-') > -1 &&
11203
- !customElements.get(tagName));
11204
- if (isUnknown && !matchingSchemas(schemas, tagName)) {
11205
- const isHostStandalone = isHostComponentStandalone(lView);
11206
- const templateLocation = getTemplateLocationDetails(lView);
11207
- const schemas = `'${isHostStandalone ? '@Component' : '@NgModule'}.schemas'`;
11208
- let message = `'${tagName}' is not a known element${templateLocation}:\n`;
11209
- message += `1. If '${tagName}' is an Angular component, then verify that it is ${isHostStandalone
11210
- ? "included in the '@Component.imports' of this component"
11211
- : 'a part of an @NgModule where this component is declared'}.\n`;
11212
- if (tagName && tagName.indexOf('-') > -1) {
11213
- message += `2. If '${tagName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the ${schemas} of this component to suppress this message.`;
11214
- }
11215
- else {
11216
- message += `2. To allow any element add 'NO_ERRORS_SCHEMA' to the ${schemas} of this component.`;
11217
- }
11218
- if (shouldThrowErrorOnUnknownElement) {
11219
- throw new RuntimeError(304 /* RuntimeErrorCode.UNKNOWN_ELEMENT */, message);
11220
- }
11221
- else {
11222
- console.error(formatRuntimeError(304 /* RuntimeErrorCode.UNKNOWN_ELEMENT */, message));
11223
- }
11224
- }
11225
- }
11226
- }
11227
- /**
11228
- * Validates that the property of the element is known at runtime and returns
11229
- * false if it's not the case.
11230
- * This check is relevant for JIT-compiled components (for AOT-compiled
11231
- * ones this check happens at build time).
11232
- *
11233
- * The property is considered known if either:
11234
- * - it's a known property of the element
11235
- * - the element is allowed by one of the schemas
11236
- * - the property is used for animations
11237
- *
11238
- * @param element Element to validate
11239
- * @param propName Name of the property to check
11240
- * @param tagName Name of the tag hosting the property
11241
- * @param schemas Array of schemas
11242
- */
11243
- function isPropertyValid(element, propName, tagName, schemas) {
11244
- // If `schemas` is set to `null`, that's an indication that this Component was compiled in AOT
11245
- // mode where this check happens at compile time. In JIT mode, `schemas` is always present and
11246
- // defined as an array (as an empty array in case `schemas` field is not defined) and we should
11247
- // execute the check below.
11248
- if (schemas === null)
11249
- return true;
11250
- // The property is considered valid if the element matches the schema, it exists on the element,
11251
- // or it is synthetic.
11252
- if (matchingSchemas(schemas, tagName) || propName in element || isAnimationProp(propName)) {
11253
- return true;
11254
- }
11255
- // Note: `typeof Node` returns 'function' in most browsers, but is undefined with domino.
11256
- return typeof Node === 'undefined' || Node === null || !(element instanceof Node);
11257
- }
11258
- /**
11259
- * Logs or throws an error that a property is not supported on an element.
11260
- *
11261
- * @param propName Name of the invalid property
11262
- * @param tagName Name of the tag hosting the property
11263
- * @param nodeType Type of the node hosting the property
11264
- * @param lView An `LView` that represents a current component
11265
- */
11266
- function handleUnknownPropertyError(propName, tagName, nodeType, lView) {
11267
- // Special-case a situation when a structural directive is applied to
11268
- // an `<ng-template>` element, for example: `<ng-template *ngIf="true">`.
11269
- // In this case the compiler generates the `ɵɵtemplate` instruction with
11270
- // the `null` as the tagName. The directive matching logic at runtime relies
11271
- // on this effect (see `isInlineTemplate`), thus using the 'ng-template' as
11272
- // a default value of the `tNode.value` is not feasible at this moment.
11273
- if (!tagName && nodeType === 4 /* TNodeType.Container */) {
11274
- tagName = 'ng-template';
11275
- }
11276
- const isHostStandalone = isHostComponentStandalone(lView);
11277
- const templateLocation = getTemplateLocationDetails(lView);
11278
- let message = `Can't bind to '${propName}' since it isn't a known property of '${tagName}'${templateLocation}.`;
11279
- const schemas = `'${isHostStandalone ? '@Component' : '@NgModule'}.schemas'`;
11280
- const importLocation = isHostStandalone
11281
- ? "included in the '@Component.imports' of this component"
11282
- : 'a part of an @NgModule where this component is declared';
11283
- if (KNOWN_CONTROL_FLOW_DIRECTIVES.has(propName)) {
11284
- // Most likely this is a control flow directive (such as `*ngIf`) used in
11285
- // a template, but the directive or the `CommonModule` is not imported.
11286
- const correspondingImport = KNOWN_CONTROL_FLOW_DIRECTIVES.get(propName);
11287
- message +=
11288
- `\nIf the '${propName}' is an Angular control flow directive, ` +
11289
- `please make sure that either the '${correspondingImport}' directive or the 'CommonModule' is ${importLocation}.`;
11290
- }
11291
- else {
11292
- // May be an Angular component, which is not imported/declared?
11293
- message +=
11294
- `\n1. If '${tagName}' is an Angular component and it has the ` +
11295
- `'${propName}' input, then verify that it is ${importLocation}.`;
11296
- // May be a Web Component?
11297
- if (tagName && tagName.indexOf('-') > -1) {
11298
- message +=
11299
- `\n2. If '${tagName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' ` +
11300
- `to the ${schemas} of this component to suppress this message.`;
11301
- message +=
11302
- `\n3. To allow any property add 'NO_ERRORS_SCHEMA' to ` +
11303
- `the ${schemas} of this component.`;
11304
- }
11305
- else {
11306
- // If it's expected, the error can be suppressed by the `NO_ERRORS_SCHEMA` schema.
11307
- message +=
11308
- `\n2. To allow any property add 'NO_ERRORS_SCHEMA' to ` +
11309
- `the ${schemas} of this component.`;
11310
- }
11311
- }
11312
- reportUnknownPropertyError(message);
11313
- }
11314
- function reportUnknownPropertyError(message) {
11315
- if (shouldThrowErrorOnUnknownProperty) {
11316
- throw new RuntimeError(303 /* RuntimeErrorCode.UNKNOWN_BINDING */, message);
11317
- }
11318
- else {
11319
- console.error(formatRuntimeError(303 /* RuntimeErrorCode.UNKNOWN_BINDING */, message));
11320
- }
11321
- }
11322
- /**
11323
- * WARNING: this is a **dev-mode only** function (thus should always be guarded by the `ngDevMode`)
11324
- * and must **not** be used in production bundles. The function makes megamorphic reads, which might
11325
- * be too slow for production mode and also it relies on the constructor function being available.
11326
- *
11327
- * Gets a reference to the host component def (where a current component is declared).
11328
- *
11329
- * @param lView An `LView` that represents a current component that is being rendered.
11330
- */
11331
- function getDeclarationComponentDef(lView) {
11332
- !ngDevMode && throwError('Must never be called in production mode');
11333
- const declarationLView = lView[DECLARATION_COMPONENT_VIEW];
11334
- const context = declarationLView[CONTEXT];
11335
- // Unable to obtain a context.
11336
- if (!context)
11337
- return null;
11338
- return context.constructor ? getComponentDef(context.constructor) : null;
11339
- }
11340
- /**
11341
- * WARNING: this is a **dev-mode only** function (thus should always be guarded by the `ngDevMode`)
11342
- * and must **not** be used in production bundles. The function makes megamorphic reads, which might
11343
- * be too slow for production mode.
11344
- *
11345
- * Checks if the current component is declared inside of a standalone component template.
11346
- *
11347
- * @param lView An `LView` that represents a current component that is being rendered.
11348
- */
11349
- function isHostComponentStandalone(lView) {
11350
- !ngDevMode && throwError('Must never be called in production mode');
11351
- const componentDef = getDeclarationComponentDef(lView);
11352
- // Treat host component as non-standalone if we can't obtain the def.
11353
- return !!componentDef?.standalone;
11354
- }
11355
- /**
11356
- * WARNING: this is a **dev-mode only** function (thus should always be guarded by the `ngDevMode`)
11357
- * and must **not** be used in production bundles. The function makes megamorphic reads, which might
11358
- * be too slow for production mode.
11359
- *
11360
- * Constructs a string describing the location of the host component template. The function is used
11361
- * in dev mode to produce error messages.
11362
- *
11363
- * @param lView An `LView` that represents a current component that is being rendered.
11364
- */
11365
- function getTemplateLocationDetails(lView) {
11366
- !ngDevMode && throwError('Must never be called in production mode');
11367
- const hostComponentDef = getDeclarationComponentDef(lView);
11368
- const componentClassName = hostComponentDef?.type?.name;
11369
- return componentClassName ? ` (used in the '${componentClassName}' component template)` : '';
11370
- }
11371
- /**
11372
- * The set of known control flow directives and their corresponding imports.
11373
- * We use this set to produce a more precises error message with a note
11374
- * that the `CommonModule` should also be included.
11375
- */
11376
- const KNOWN_CONTROL_FLOW_DIRECTIVES = new Map([
11377
- ['ngIf', 'NgIf'],
11378
- ['ngFor', 'NgFor'],
11379
- ['ngSwitchCase', 'NgSwitchCase'],
11380
- ['ngSwitchDefault', 'NgSwitchDefault'],
11381
- ]);
11382
- /**
11383
- * Returns true if the tag name is allowed by specified schemas.
11384
- * @param schemas Array of schemas
11385
- * @param tagName Name of the tag
11386
- */
11387
- function matchingSchemas(schemas, tagName) {
11388
- if (schemas !== null) {
11389
- for (let i = 0; i < schemas.length; i++) {
11390
- const schema = schemas[i];
11391
- if (schema === NO_ERRORS_SCHEMA ||
11392
- (schema === CUSTOM_ELEMENTS_SCHEMA && tagName && tagName.indexOf('-') > -1)) {
11393
- return true;
11394
- }
11395
- }
11396
- }
11397
- return false;
11398
- }
11399
-
11400
11588
  /**
11401
11589
  *
11402
11590
  * @codeGenApi
@@ -11990,122 +12178,6 @@ function extractAttrsAndClassesFromSelector(selector) {
11990
12178
  /** A special value which designates that a value has not changed. */
11991
12179
  const NO_CHANGE = typeof ngDevMode === 'undefined' || ngDevMode ? { __brand__: 'NO_CHANGE' } : {};
11992
12180
 
11993
- function createTextNode(renderer, value) {
11994
- ngDevMode && ngDevMode.rendererCreateTextNode++;
11995
- ngDevMode && ngDevMode.rendererSetText++;
11996
- return renderer.createText(value);
11997
- }
11998
- function updateTextNode(renderer, rNode, value) {
11999
- ngDevMode && ngDevMode.rendererSetText++;
12000
- renderer.setValue(rNode, value);
12001
- }
12002
- function createCommentNode(renderer, value) {
12003
- ngDevMode && ngDevMode.rendererCreateComment++;
12004
- return renderer.createComment(escapeCommentText(value));
12005
- }
12006
- /**
12007
- * Creates a native element from a tag name, using a renderer.
12008
- * @param renderer A renderer to use
12009
- * @param name the tag name
12010
- * @param namespace Optional namespace for element.
12011
- * @returns the element created
12012
- */
12013
- function createElementNode(renderer, name, namespace) {
12014
- ngDevMode && ngDevMode.rendererCreateElement++;
12015
- return renderer.createElement(name, namespace);
12016
- }
12017
- /**
12018
- * Inserts a native node before another native node for a given parent.
12019
- * This is a utility function that can be used when native nodes were determined.
12020
- */
12021
- function nativeInsertBefore(renderer, parent, child, beforeNode, isMove) {
12022
- ngDevMode && ngDevMode.rendererInsertBefore++;
12023
- renderer.insertBefore(parent, child, beforeNode, isMove);
12024
- }
12025
- function nativeAppendChild(renderer, parent, child) {
12026
- ngDevMode && ngDevMode.rendererAppendChild++;
12027
- ngDevMode && assertDefined(parent, 'parent node must be defined');
12028
- renderer.appendChild(parent, child);
12029
- }
12030
- function nativeAppendOrInsertBefore(renderer, parent, child, beforeNode, isMove) {
12031
- if (beforeNode !== null) {
12032
- nativeInsertBefore(renderer, parent, child, beforeNode, isMove);
12033
- }
12034
- else {
12035
- nativeAppendChild(renderer, parent, child);
12036
- }
12037
- }
12038
- /**
12039
- * Removes a native node itself using a given renderer. To remove the node we are looking up its
12040
- * parent from the native tree as not all platforms / browsers support the equivalent of
12041
- * node.remove().
12042
- *
12043
- * @param renderer A renderer to be used
12044
- * @param rNode The native node that should be removed
12045
- * @param isHostElement A flag indicating if a node to be removed is a host of a component.
12046
- */
12047
- function nativeRemoveNode(renderer, rNode, isHostElement) {
12048
- ngDevMode && ngDevMode.rendererRemoveNode++;
12049
- renderer.removeChild(null, rNode, isHostElement);
12050
- }
12051
- /**
12052
- * Clears the contents of a given RElement.
12053
- *
12054
- * @param rElement the native RElement to be cleared
12055
- */
12056
- function clearElementContents(rElement) {
12057
- rElement.textContent = '';
12058
- }
12059
- /**
12060
- * Write `cssText` to `RElement`.
12061
- *
12062
- * This function does direct write without any reconciliation. Used for writing initial values, so
12063
- * that static styling values do not pull in the style parser.
12064
- *
12065
- * @param renderer Renderer to use
12066
- * @param element The element which needs to be updated.
12067
- * @param newValue The new class list to write.
12068
- */
12069
- function writeDirectStyle(renderer, element, newValue) {
12070
- ngDevMode && assertString(newValue, "'newValue' should be a string");
12071
- renderer.setAttribute(element, 'style', newValue);
12072
- ngDevMode && ngDevMode.rendererSetStyle++;
12073
- }
12074
- /**
12075
- * Write `className` to `RElement`.
12076
- *
12077
- * This function does direct write without any reconciliation. Used for writing initial values, so
12078
- * that static styling values do not pull in the style parser.
12079
- *
12080
- * @param renderer Renderer to use
12081
- * @param element The element which needs to be updated.
12082
- * @param newValue The new class list to write.
12083
- */
12084
- function writeDirectClass(renderer, element, newValue) {
12085
- ngDevMode && assertString(newValue, "'newValue' should be a string");
12086
- if (newValue === '') {
12087
- // There are tests in `google3` which expect `element.getAttribute('class')` to be `null`.
12088
- renderer.removeAttribute(element, 'class');
12089
- }
12090
- else {
12091
- renderer.setAttribute(element, 'class', newValue);
12092
- }
12093
- ngDevMode && ngDevMode.rendererSetClassName++;
12094
- }
12095
- /** Sets up the static DOM attributes on an `RNode`. */
12096
- function setupStaticAttributes(renderer, element, tNode) {
12097
- const { mergedAttrs, classes, styles } = tNode;
12098
- if (mergedAttrs !== null) {
12099
- setUpAttributes(renderer, element, mergedAttrs);
12100
- }
12101
- if (classes !== null) {
12102
- writeDirectClass(renderer, element, classes);
12103
- }
12104
- if (styles !== null) {
12105
- writeDirectStyle(renderer, element, styles);
12106
- }
12107
- }
12108
-
12109
12181
  /**
12110
12182
  * Creates a TView instance
12111
12183
  *
@@ -18010,7 +18082,7 @@ class ComponentFactory extends ComponentFactory$1 {
18010
18082
  const cmpDef = this.componentDef;
18011
18083
  ngDevMode && verifyNotAnOrphanComponent(cmpDef);
18012
18084
  const tAttributes = rootSelectorOrNode
18013
- ? ['ng-version', '19.2.16']
18085
+ ? ['ng-version', '19.2.17']
18014
18086
  : // Extract attributes and classes from the first selector only to match VE behavior.
18015
18087
  extractAttrsAndClassesFromSelector(this.componentDef.selectors[0]);
18016
18088
  // Create the root view. Uses empty TView and ContentTemplate.
@@ -19558,41 +19630,6 @@ function setAllowDuplicateNgModuleIdsForTest(allowDuplicates) {
19558
19630
  checkForDuplicateNgModules = !allowDuplicates;
19559
19631
  }
19560
19632
 
19561
- /**
19562
- * Validation function invoked at runtime for each binding that might potentially
19563
- * represent a security-sensitive attribute of an <iframe>.
19564
- * See `IFRAME_SECURITY_SENSITIVE_ATTRS` in the
19565
- * `packages/compiler/src/schema/dom_security_schema.ts` script for the full list
19566
- * of such attributes.
19567
- *
19568
- * @codeGenApi
19569
- */
19570
- function ɵɵvalidateIframeAttribute(attrValue, tagName, attrName) {
19571
- const lView = getLView();
19572
- const tNode = getSelectedTNode();
19573
- const element = getNativeByTNode(tNode, lView);
19574
- // Restrict any dynamic bindings of security-sensitive attributes/properties
19575
- // on an <iframe> for security reasons.
19576
- if (tNode.type === 2 /* TNodeType.Element */ && tagName.toLowerCase() === 'iframe') {
19577
- const iframe = element;
19578
- // Unset previously applied `src` and `srcdoc` if we come across a situation when
19579
- // a security-sensitive attribute is set later via an attribute/property binding.
19580
- iframe.src = '';
19581
- iframe.srcdoc = trustedHTMLFromString('');
19582
- // Also remove the <iframe> from the document.
19583
- nativeRemoveNode(lView[RENDERER], iframe);
19584
- const errorMessage = ngDevMode &&
19585
- `Angular has detected that the \`${attrName}\` was applied ` +
19586
- `as a binding to an <iframe>${getTemplateLocationDetails(lView)}. ` +
19587
- `For security reasons, the \`${attrName}\` can be set on an <iframe> ` +
19588
- `as a static attribute only. \n` +
19589
- `To fix this, switch the \`${attrName}\` binding to a static attribute ` +
19590
- `in a template or in host bindings section.`;
19591
- throw new RuntimeError(-910 /* RuntimeErrorCode.UNSAFE_IFRAME_ATTRS */, errorMessage);
19592
- }
19593
- return attrValue;
19594
- }
19595
-
19596
19633
  /**
19597
19634
  * Represents an instance of an `NgModule` created by an `NgModuleFactory`.
19598
19635
  * Provides access to the `NgModule` instance and related objects.
@@ -33715,11 +33752,11 @@ const angularCoreEnv = (() => ({
33715
33752
  'ɵɵsanitizeStyle': ɵɵsanitizeStyle,
33716
33753
  'ɵɵsanitizeResourceUrl': ɵɵsanitizeResourceUrl,
33717
33754
  'ɵɵsanitizeScript': ɵɵsanitizeScript,
33755
+ 'ɵɵvalidateAttribute': ɵɵvalidateAttribute,
33718
33756
  'ɵɵsanitizeUrl': ɵɵsanitizeUrl,
33719
33757
  'ɵɵsanitizeUrlOrResourceUrl': ɵɵsanitizeUrlOrResourceUrl,
33720
33758
  'ɵɵtrustConstantHtml': ɵɵtrustConstantHtml,
33721
33759
  'ɵɵtrustConstantResourceUrl': ɵɵtrustConstantResourceUrl,
33722
- 'ɵɵvalidateIframeAttribute': ɵɵvalidateIframeAttribute,
33723
33760
  'forwardRef': forwardRef,
33724
33761
  'resolveForwardRef': resolveForwardRef,
33725
33762
  'ɵɵtwoWayProperty': ɵɵtwoWayProperty,
@@ -34752,7 +34789,7 @@ class Version {
34752
34789
  /**
34753
34790
  * @publicApi
34754
34791
  */
34755
- const VERSION = new Version('19.2.16');
34792
+ const VERSION = new Version('19.2.17');
34756
34793
 
34757
34794
  /**
34758
34795
  * Combination of NgModuleFactory and ComponentFactories.
@@ -40667,5 +40704,5 @@ const REQUEST_CONTEXT = new InjectionToken(typeof ngDevMode === 'undefined' || n
40667
40704
  factory: () => null,
40668
40705
  });
40669
40706
 
40670
- export { ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, AfterRenderPhase, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory$1 as ComponentFactory, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, DestroyRef, Directive, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, HOST_TAG_NAME, Host, HostAttributeToken, HostBinding, HostListener, INJECTOR$1 as INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, OutputEmitterRef, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, PendingTasks, Pipe, PlatformRef, Query, QueryList, REQUEST, REQUEST_CONTEXT, RESPONSE_INIT, Renderer2, RendererFactory2, RendererStyleFlags2, ResourceStatus, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation, ViewRef, afterNextRender, afterRender, afterRenderEffect, asNativeElements, assertInInjectionContext, assertNotInReactiveContext, assertPlatform, booleanAttribute, computed, contentChild, contentChildren, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, input, isDevMode, isSignal, isStandalone, linkedSignal, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, model, numberAttribute, output, platformCore, provideAppInitializer, provideEnvironmentInitializer, provideExperimentalCheckNoChangesForDebug, provideExperimentalZonelessChangeDetection, providePlatformInitializer, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, resource, runInInjectionContext, setTestabilityGetter, signal, untracked, viewChild, viewChildren, AfterRenderManager as ɵAfterRenderManager, CLIENT_RENDER_MODE_FLAG as ɵCLIENT_RENDER_MODE_FLAG, CONTAINER_HEADER_OFFSET as ɵCONTAINER_HEADER_OFFSET, ChangeDetectionScheduler as ɵChangeDetectionScheduler, ChangeDetectionSchedulerImpl as ɵChangeDetectionSchedulerImpl, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG as ɵDEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR as ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DEHYDRATED_BLOCK_REGISTRY as ɵDEHYDRATED_BLOCK_REGISTRY, DeferBlockBehavior as ɵDeferBlockBehavior, DeferBlockState as ɵDeferBlockState, ENABLE_ROOT_COMPONENT_BOOTSTRAP as ɵENABLE_ROOT_COMPONENT_BOOTSTRAP, EffectScheduler as ɵEffectScheduler, HydrationStatus as ɵHydrationStatus, IMAGE_CONFIG as ɵIMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS as ɵIMAGE_CONFIG_DEFAULTS, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, ɵINPUT_SIGNAL_BRAND_WRITE_TYPE, INTERNAL_APPLICATION_ERROR_HANDLER as ɵINTERNAL_APPLICATION_ERROR_HANDLER, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, IS_INCREMENTAL_HYDRATION_ENABLED as ɵIS_INCREMENTAL_HYDRATION_ENABLED, JSACTION_BLOCK_ELEMENT_MAP as ɵJSACTION_BLOCK_ELEMENT_MAP, JSACTION_EVENT_CONTRACT as ɵJSACTION_EVENT_CONTRACT, LContext as ɵLContext, LocaleDataIndex as ɵLocaleDataIndex, MicrotaskEffectScheduler as ɵMicrotaskEffectScheduler, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, PERFORMANCE_MARK_PREFIX as ɵPERFORMANCE_MARK_PREFIX, PROVIDED_NG_ZONE as ɵPROVIDED_NG_ZONE, PendingTasksInternal as ɵPendingTasksInternal, R3Injector as ɵR3Injector, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, ResourceImpl as ɵResourceImpl, RuntimeError as ɵRuntimeError, SIGNAL as ɵSIGNAL, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, TimerScheduler as ɵTimerScheduler, TracingAction as ɵTracingAction, TracingService as ɵTracingService, USE_RUNTIME_DEPS_TRACKER_FOR_JIT as ɵUSE_RUNTIME_DEPS_TRACKER_FOR_JIT, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, ZONELESS_ENABLED as ɵZONELESS_ENABLED, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, annotateForHydration as ɵannotateForHydration, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, createOrReusePlatformInjector as ɵcreateOrReusePlatformInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, depsTracker as ɵdepsTracker, detectChangesInViewIfRequired as ɵdetectChangesInViewIfRequired, devModeEqual as ɵdevModeEqual, disableProfiling as ɵdisableProfiling, enableProfiling as ɵenableProfiling, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn, getClosestComponentName as ɵgetClosestComponentName, getComponentDef as ɵgetComponentDef, getDebugNode as ɵgetDebugNode, getDeferBlocks$1 as ɵgetDeferBlocks, getDirectives as ɵgetDirectives, getDocument as ɵgetDocument, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getOutputDestroyRef as ɵgetOutputDestroyRef, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, internalProvideZoneChangeDetection as ɵinternalProvideZoneChangeDetection, isBoundToModule as ɵisBoundToModule, isComponentDefPendingResolution as ɵisComponentDefPendingResolution, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, isViewDirty as ɵisViewDirty, markForRefresh as ɵmarkForRefresh, microtaskEffect as ɵmicrotaskEffect, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, performanceMarkFeature as ɵperformanceMarkFeature, publishExternalGlobalUtil as ɵpublishExternalGlobalUtil, readHydrationInfo as ɵreadHydrationInfo, registerLocaleData as ɵregisterLocaleData, renderDeferBlockState as ɵrenderDeferBlockState, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, restoreComponentResolutionQueue as ɵrestoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, ɵsetClassDebugInfo, setClassMetadata as ɵsetClassMetadata, setClassMetadataAsync as ɵsetClassMetadataAsync, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setInjectorProfilerContext as ɵsetInjectorProfilerContext, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, startMeasuring as ɵstartMeasuring, stopMeasuring as ɵstopMeasuring, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, triggerResourceLoading as ɵtriggerResourceLoading, truncateMiddle as ɵtruncateMiddle, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵunwrapWritableSignal, withDomHydration as ɵwithDomHydration, withEventReplay as ɵwithEventReplay, withI18nSupport as ɵwithI18nSupport, withIncrementalHydration as ɵwithIncrementalHydration, ɵɵCopyDefinitionFeature, ɵɵExternalStylesFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵattachSourceLocations, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵdeclareLet, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵdeferHydrateNever, ɵɵdeferHydrateOnHover, ɵɵdeferHydrateOnIdle, ɵɵdeferHydrateOnImmediate, ɵɵdeferHydrateOnInteraction, ɵɵdeferHydrateOnTimer, ɵɵdeferHydrateOnViewport, ɵɵdeferHydrateWhen, ɵɵdeferOnHover, ɵɵdeferOnIdle, ɵɵdeferOnImmediate, ɵɵdeferOnInteraction, ɵɵdeferOnTimer, ɵɵdeferOnViewport, ɵɵdeferPrefetchOnHover, ɵɵdeferPrefetchOnIdle, ɵɵdeferPrefetchOnImmediate, ɵɵdeferPrefetchOnInteraction, ɵɵdeferPrefetchOnTimer, ɵɵdeferPrefetchOnViewport, ɵɵdeferPrefetchWhen, ɵɵdeferWhen, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetComponentDepsFactory, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵgetReplaceMetadataURL, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareClassMetadataAsync, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryAdvance, ɵɵqueryRefresh, ɵɵreadContextLet, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵreplaceMetadata, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstoreLet, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateIframeAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
40707
+ export { ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, AfterRenderPhase, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory$1 as ComponentFactory, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, DestroyRef, Directive, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, HOST_TAG_NAME, Host, HostAttributeToken, HostBinding, HostListener, INJECTOR$1 as INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, OutputEmitterRef, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, PendingTasks, Pipe, PlatformRef, Query, QueryList, REQUEST, REQUEST_CONTEXT, RESPONSE_INIT, Renderer2, RendererFactory2, RendererStyleFlags2, ResourceStatus, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation, ViewRef, afterNextRender, afterRender, afterRenderEffect, asNativeElements, assertInInjectionContext, assertNotInReactiveContext, assertPlatform, booleanAttribute, computed, contentChild, contentChildren, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, input, isDevMode, isSignal, isStandalone, linkedSignal, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, model, numberAttribute, output, platformCore, provideAppInitializer, provideEnvironmentInitializer, provideExperimentalCheckNoChangesForDebug, provideExperimentalZonelessChangeDetection, providePlatformInitializer, provideZoneChangeDetection, reflectComponentType, resolveForwardRef, resource, runInInjectionContext, setTestabilityGetter, signal, untracked, viewChild, viewChildren, AfterRenderManager as ɵAfterRenderManager, CLIENT_RENDER_MODE_FLAG as ɵCLIENT_RENDER_MODE_FLAG, CONTAINER_HEADER_OFFSET as ɵCONTAINER_HEADER_OFFSET, ChangeDetectionScheduler as ɵChangeDetectionScheduler, ChangeDetectionSchedulerImpl as ɵChangeDetectionSchedulerImpl, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, DEFER_BLOCK_CONFIG as ɵDEFER_BLOCK_CONFIG, DEFER_BLOCK_DEPENDENCY_INTERCEPTOR as ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR, DEHYDRATED_BLOCK_REGISTRY as ɵDEHYDRATED_BLOCK_REGISTRY, DeferBlockBehavior as ɵDeferBlockBehavior, DeferBlockState as ɵDeferBlockState, ENABLE_ROOT_COMPONENT_BOOTSTRAP as ɵENABLE_ROOT_COMPONENT_BOOTSTRAP, EffectScheduler as ɵEffectScheduler, HydrationStatus as ɵHydrationStatus, IMAGE_CONFIG as ɵIMAGE_CONFIG, IMAGE_CONFIG_DEFAULTS as ɵIMAGE_CONFIG_DEFAULTS, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, ɵINPUT_SIGNAL_BRAND_WRITE_TYPE, INTERNAL_APPLICATION_ERROR_HANDLER as ɵINTERNAL_APPLICATION_ERROR_HANDLER, IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, IS_INCREMENTAL_HYDRATION_ENABLED as ɵIS_INCREMENTAL_HYDRATION_ENABLED, JSACTION_BLOCK_ELEMENT_MAP as ɵJSACTION_BLOCK_ELEMENT_MAP, JSACTION_EVENT_CONTRACT as ɵJSACTION_EVENT_CONTRACT, LContext as ɵLContext, LocaleDataIndex as ɵLocaleDataIndex, MicrotaskEffectScheduler as ɵMicrotaskEffectScheduler, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, PERFORMANCE_MARK_PREFIX as ɵPERFORMANCE_MARK_PREFIX, PROVIDED_NG_ZONE as ɵPROVIDED_NG_ZONE, PendingTasksInternal as ɵPendingTasksInternal, R3Injector as ɵR3Injector, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, ResourceImpl as ɵResourceImpl, RuntimeError as ɵRuntimeError, SIGNAL as ɵSIGNAL, SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, TimerScheduler as ɵTimerScheduler, TracingAction as ɵTracingAction, TracingService as ɵTracingService, USE_RUNTIME_DEPS_TRACKER_FOR_JIT as ɵUSE_RUNTIME_DEPS_TRACKER_FOR_JIT, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, ZONELESS_ENABLED as ɵZONELESS_ENABLED, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, annotateForHydration as ɵannotateForHydration, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, createOrReusePlatformInjector as ɵcreateOrReusePlatformInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, depsTracker as ɵdepsTracker, detectChangesInViewIfRequired as ɵdetectChangesInViewIfRequired, devModeEqual as ɵdevModeEqual, disableProfiling as ɵdisableProfiling, enableProfiling as ɵenableProfiling, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn, getClosestComponentName as ɵgetClosestComponentName, getComponentDef as ɵgetComponentDef, getDebugNode as ɵgetDebugNode, getDeferBlocks$1 as ɵgetDeferBlocks, getDirectives as ɵgetDirectives, getDocument as ɵgetDocument, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getOutputDestroyRef as ɵgetOutputDestroyRef, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, internalProvideZoneChangeDetection as ɵinternalProvideZoneChangeDetection, isBoundToModule as ɵisBoundToModule, isComponentDefPendingResolution as ɵisComponentDefPendingResolution, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, isViewDirty as ɵisViewDirty, markForRefresh as ɵmarkForRefresh, microtaskEffect as ɵmicrotaskEffect, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, performanceMarkFeature as ɵperformanceMarkFeature, publishExternalGlobalUtil as ɵpublishExternalGlobalUtil, readHydrationInfo as ɵreadHydrationInfo, registerLocaleData as ɵregisterLocaleData, renderDeferBlockState as ɵrenderDeferBlockState, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, restoreComponentResolutionQueue as ɵrestoreComponentResolutionQueue, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, ɵsetClassDebugInfo, setClassMetadata as ɵsetClassMetadata, setClassMetadataAsync as ɵsetClassMetadataAsync, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setInjectorProfilerContext as ɵsetInjectorProfilerContext, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, startMeasuring as ɵstartMeasuring, stopMeasuring as ɵstopMeasuring, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, triggerResourceLoading as ɵtriggerResourceLoading, truncateMiddle as ɵtruncateMiddle, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵunwrapWritableSignal, withDomHydration as ɵwithDomHydration, withEventReplay as ɵwithEventReplay, withI18nSupport as ɵwithI18nSupport, withIncrementalHydration as ɵwithIncrementalHydration, ɵɵCopyDefinitionFeature, ɵɵExternalStylesFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵattachSourceLocations, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcomponentInstance, ɵɵconditional, ɵɵcontentQuery, ɵɵcontentQuerySignal, ɵɵdeclareLet, ɵɵdefer, ɵɵdeferEnableTimerScheduling, ɵɵdeferHydrateNever, ɵɵdeferHydrateOnHover, ɵɵdeferHydrateOnIdle, ɵɵdeferHydrateOnImmediate, ɵɵdeferHydrateOnInteraction, ɵɵdeferHydrateOnTimer, ɵɵdeferHydrateOnViewport, ɵɵdeferHydrateWhen, ɵɵdeferOnHover, ɵɵdeferOnIdle, ɵɵdeferOnImmediate, ɵɵdeferOnInteraction, ɵɵdeferOnTimer, ɵɵdeferOnViewport, ɵɵdeferPrefetchOnHover, ɵɵdeferPrefetchOnIdle, ɵɵdeferPrefetchOnImmediate, ɵɵdeferPrefetchOnInteraction, ɵɵdeferPrefetchOnTimer, ɵɵdeferPrefetchOnViewport, ɵɵdeferPrefetchWhen, ɵɵdeferWhen, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetComponentDepsFactory, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵgetReplaceMetadataURL, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareClassMetadataAsync, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryAdvance, ɵɵqueryRefresh, ɵɵreadContextLet, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵrepeater, ɵɵrepeaterCreate, ɵɵrepeaterTrackByIdentity, ɵɵrepeaterTrackByIndex, ɵɵreplaceMetadata, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstoreLet, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵtwoWayBindingSet, ɵɵtwoWayListener, ɵɵtwoWayProperty, ɵɵvalidateAttribute, ɵɵviewQuery, ɵɵviewQuerySignal };
40671
40708
  //# sourceMappingURL=core.mjs.map