@angular/platform-browser 19.0.0-next.7 → 19.0.0-next.8

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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License
2
+
3
+ Copyright (c) 2010-2024 Google LLC. https://angular.dev/license
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v19.0.0-next.7
2
+ * @license Angular v19.0.0-next.8
3
3
  * (c) 2010-2024 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v19.0.0-next.7
2
+ * @license Angular v19.0.0-next.8
3
3
  * (c) 2010-2024 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v19.0.0-next.7
2
+ * @license Angular v19.0.0-next.8
3
3
  * (c) 2010-2024 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -114,10 +114,10 @@ class AsyncAnimationRendererFactory {
114
114
  whenRenderingDone() {
115
115
  return this.delegate.whenRenderingDone?.() ?? Promise.resolve();
116
116
  }
117
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: AsyncAnimationRendererFactory, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable }); }
118
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: AsyncAnimationRendererFactory }); }
117
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: AsyncAnimationRendererFactory, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable }); }
118
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: AsyncAnimationRendererFactory }); }
119
119
  }
120
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: AsyncAnimationRendererFactory, decorators: [{
120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: AsyncAnimationRendererFactory, decorators: [{
121
121
  type: Injectable
122
122
  }], ctorParameters: () => [{ type: Document }, { type: i0.RendererFactory2 }, { type: i0.NgZone }, { type: undefined }, { type: Promise }] });
123
123
  /**
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v19.0.0-next.7
2
+ * @license Angular v19.0.0-next.8
3
3
  * (c) 2010-2024 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -22,10 +22,10 @@ class InjectableAnimationEngine extends ɵAnimationEngine {
22
22
  ngOnDestroy() {
23
23
  this.flush();
24
24
  }
25
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: InjectableAnimationEngine, deps: [{ token: DOCUMENT }, { token: i1.AnimationDriver }, { token: i1.ɵAnimationStyleNormalizer }], target: i0.ɵɵFactoryTarget.Injectable }); }
26
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: InjectableAnimationEngine }); }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: InjectableAnimationEngine, deps: [{ token: DOCUMENT }, { token: i1.AnimationDriver }, { token: i1.ɵAnimationStyleNormalizer }], target: i0.ɵɵFactoryTarget.Injectable }); }
26
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: InjectableAnimationEngine }); }
27
27
  }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: InjectableAnimationEngine, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: InjectableAnimationEngine, decorators: [{
29
29
  type: Injectable
30
30
  }], ctorParameters: () => [{ type: Document, decorators: [{
31
31
  type: Inject,
@@ -95,11 +95,11 @@ class BrowserAnimationsModule {
95
95
  : BROWSER_ANIMATIONS_PROVIDERS,
96
96
  };
97
97
  }
98
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: BrowserAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
99
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-next.7", ngImport: i0, type: BrowserAnimationsModule, exports: [BrowserModule] }); }
100
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: BrowserAnimationsModule, providers: BROWSER_ANIMATIONS_PROVIDERS, imports: [BrowserModule] }); }
98
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: BrowserAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
99
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-next.8", ngImport: i0, type: BrowserAnimationsModule, exports: [BrowserModule] }); }
100
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: BrowserAnimationsModule, providers: BROWSER_ANIMATIONS_PROVIDERS, imports: [BrowserModule] }); }
101
101
  }
102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: BrowserAnimationsModule, decorators: [{
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: BrowserAnimationsModule, decorators: [{
103
103
  type: NgModule,
104
104
  args: [{
105
105
  exports: [BrowserModule],
@@ -139,11 +139,11 @@ function provideAnimations() {
139
139
  * @publicApi
140
140
  */
141
141
  class NoopAnimationsModule {
142
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: NoopAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
143
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-next.7", ngImport: i0, type: NoopAnimationsModule, exports: [BrowserModule] }); }
144
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: NoopAnimationsModule, providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS, imports: [BrowserModule] }); }
142
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: NoopAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
143
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-next.8", ngImport: i0, type: NoopAnimationsModule, exports: [BrowserModule] }); }
144
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: NoopAnimationsModule, providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS, imports: [BrowserModule] }); }
145
145
  }
146
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: NoopAnimationsModule, decorators: [{
146
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: NoopAnimationsModule, decorators: [{
147
147
  type: NgModule,
148
148
  args: [{
149
149
  exports: [BrowserModule],
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v19.0.0-next.7
2
+ * @license Angular v19.0.0-next.8
3
3
  * (c) 2010-2024 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -7,7 +7,7 @@
7
7
  import { ɵDomAdapter, ɵsetRootDomAdapter, ɵparseCookieValue, ɵgetDOM, isPlatformServer, DOCUMENT, ɵPLATFORM_BROWSER_ID, XhrFactory, CommonModule } from '@angular/common';
8
8
  export { ɵgetDOM } from '@angular/common';
9
9
  import * as i0 from '@angular/core';
10
- import { ɵglobal, ɵRuntimeError, Injectable, InjectionToken, Inject, APP_ID, CSP_NONCE, PLATFORM_ID, Optional, ViewEncapsulation, RendererStyleFlags2, inject, ɵGLOBAL_EVENT_DELEGATION, ɵinternalCreateApplication, ErrorHandler, ɵsetDocument, PLATFORM_INITIALIZER, createPlatformFactory, platformCore, ɵTESTABILITY_GETTER, ɵTESTABILITY, Testability, NgZone, TestabilityRegistry, ɵINJECTOR_SCOPE, RendererFactory2, ApplicationModule, NgModule, SkipSelf, ApplicationRef, ɵConsole, forwardRef, ɵXSS_SECURITY_URL, SecurityContext, ɵallowSanitizationBypassAndThrow, ɵunwrapSafeValue, ɵ_sanitizeUrl, ɵ_sanitizeHtml, ɵbypassSanitizationTrustHtml, ɵbypassSanitizationTrustStyle, ɵbypassSanitizationTrustScript, ɵbypassSanitizationTrustUrl, ɵbypassSanitizationTrustResourceUrl, ɵwithI18nSupport, ɵwithEventReplay, ENVIRONMENT_INITIALIZER, ɵZONELESS_ENABLED, ɵformatRuntimeError, makeEnvironmentProviders, ɵwithDomHydration, Version } from '@angular/core';
10
+ import { ɵglobal, ɵRuntimeError, Injectable, InjectionToken, Inject, APP_ID, CSP_NONCE, PLATFORM_ID, Optional, ViewEncapsulation, RendererStyleFlags2, ɵinternalCreateApplication, ErrorHandler, ɵsetDocument, PLATFORM_INITIALIZER, createPlatformFactory, platformCore, ɵTESTABILITY_GETTER, ɵTESTABILITY, Testability, NgZone, TestabilityRegistry, ɵINJECTOR_SCOPE, RendererFactory2, ApplicationModule, NgModule, SkipSelf, ApplicationRef, ɵConsole, forwardRef, ɵXSS_SECURITY_URL, SecurityContext, ɵallowSanitizationBypassAndThrow, ɵunwrapSafeValue, ɵ_sanitizeUrl, ɵ_sanitizeHtml, ɵbypassSanitizationTrustHtml, ɵbypassSanitizationTrustStyle, ɵbypassSanitizationTrustScript, ɵbypassSanitizationTrustUrl, ɵbypassSanitizationTrustResourceUrl, ɵwithI18nSupport, ɵwithEventReplay, ENVIRONMENT_INITIALIZER, inject, ɵZONELESS_ENABLED, ɵformatRuntimeError, makeEnvironmentProviders, ɵwithDomHydration, Version } from '@angular/core';
11
11
  import { ɵwithHttpTransferCache } from '@angular/common/http';
12
12
 
13
13
  /**
@@ -155,10 +155,10 @@ class BrowserXhr {
155
155
  build() {
156
156
  return new XMLHttpRequest();
157
157
  }
158
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: BrowserXhr, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
159
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: BrowserXhr }); }
158
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: BrowserXhr, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
159
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: BrowserXhr }); }
160
160
  }
161
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: BrowserXhr, decorators: [{
161
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: BrowserXhr, decorators: [{
162
162
  type: Injectable
163
163
  }] });
164
164
 
@@ -220,10 +220,10 @@ class EventManager {
220
220
  this._eventNameToPlugin.set(eventName, plugin);
221
221
  return plugin;
222
222
  }
223
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: EventManager, deps: [{ token: EVENT_MANAGER_PLUGINS }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
224
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: EventManager }); }
223
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: EventManager, deps: [{ token: EVENT_MANAGER_PLUGINS }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
224
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: EventManager }); }
225
225
  }
226
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: EventManager, decorators: [{
226
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: EventManager, decorators: [{
227
227
  type: Injectable
228
228
  }], ctorParameters: () => [{ type: undefined, decorators: [{
229
229
  type: Inject,
@@ -250,30 +250,51 @@ const APP_ID_ATTRIBUTE_NAME = 'ng-app-id';
250
250
  * Removes all provided elements from the document.
251
251
  * @param elements An array of HTML Elements.
252
252
  */
253
- function removeAll(elements) {
253
+ function removeElements(elements) {
254
254
  for (const element of elements) {
255
255
  element.remove();
256
256
  }
257
257
  }
258
+ /**
259
+ * Creates a `style` element with the provided inline style content.
260
+ * @param style A string of the inline style content.
261
+ * @param doc A DOM Document to use to create the element.
262
+ * @returns An HTMLStyleElement instance.
263
+ */
264
+ function createStyleElement(style, doc) {
265
+ const styleElement = doc.createElement('style');
266
+ styleElement.textContent = style;
267
+ return styleElement;
268
+ }
258
269
  /**
259
270
  * Searches a DOM document's head element for style elements with a matching application
260
- * identifier attribute (`ng-app-id`) to the provide identifier.
271
+ * identifier attribute (`ng-app-id`) to the provide identifier and adds usage records for each.
261
272
  * @param doc An HTML DOM document instance.
262
273
  * @param appId A string containing an Angular application identifer.
263
- * @returns A map of style strings to style elements if found; Otherwise, `null`.
274
+ * @param usages A Map object for tracking style usage.
264
275
  */
265
- function findServerStyles(doc, appId) {
276
+ function addServerStyles(doc, appId, usages) {
266
277
  const styleElements = doc.head?.querySelectorAll(`style[${APP_ID_ATTRIBUTE_NAME}="${appId}"]`);
267
- let styles = null;
268
278
  if (styleElements) {
269
279
  for (const styleElement of styleElements) {
270
280
  if (styleElement.textContent) {
271
- styles ??= new Map();
272
- styles.set(styleElement.textContent, styleElement);
281
+ styleElement.removeAttribute(APP_ID_ATTRIBUTE_NAME);
282
+ usages.set(styleElement.textContent, { usage: 0, elements: [styleElement] });
273
283
  }
274
284
  }
275
285
  }
276
- return styles;
286
+ }
287
+ /**
288
+ * Creates a `link` element for the provided external style URL.
289
+ * @param url A string of the URL for the stylesheet.
290
+ * @param doc A DOM Document to use to create the element.
291
+ * @returns An HTMLLinkElement instance.
292
+ */
293
+ function createLinkElement(url, doc) {
294
+ const linkElement = doc.createElement('link');
295
+ linkElement.setAttribute('rel', 'stylesheet');
296
+ linkElement.setAttribute('href', url);
297
+ return linkElement;
277
298
  }
278
299
  class SharedStylesHost {
279
300
  constructor(doc, appId, nonce, platformId = {}) {
@@ -281,50 +302,64 @@ class SharedStylesHost {
281
302
  this.appId = appId;
282
303
  this.nonce = nonce;
283
304
  /**
284
- * Provides usage information for active embedded style content and associated HTML <style> elements.
305
+ * Provides usage information for active inline style content and associated HTML <style> elements.
285
306
  * Embedded styles typically originate from the `styles` metadata of a rendered component.
286
307
  */
287
- this.embeddedStyles = new Map();
308
+ this.inline = new Map();
309
+ /**
310
+ * Provides usage information for active external style URLs and the associated HTML <link> elements.
311
+ * External styles typically originate from the `ɵɵExternalStylesFeature` of a rendered component.
312
+ */
313
+ this.external = new Map();
288
314
  /**
289
315
  * Set of host DOM nodes that will have styles attached.
290
316
  */
291
317
  this.hosts = new Set();
292
318
  this.isServer = isPlatformServer(platformId);
293
- this.serverStyles = findServerStyles(doc, appId);
319
+ addServerStyles(doc, appId, this.inline);
294
320
  this.hosts.add(doc.head);
295
321
  }
296
322
  /**
297
323
  * Adds embedded styles to the DOM via HTML `style` elements.
298
324
  * @param styles An array of style content strings.
299
325
  */
300
- addStyles(styles) {
301
- const creator = this.getStyleElement.bind(this);
326
+ addStyles(styles, urls) {
302
327
  for (const value of styles) {
303
- this.add(value, this.embeddedStyles, creator);
328
+ this.addUsage(value, this.inline, createStyleElement);
304
329
  }
330
+ urls?.forEach((value) => this.addUsage(value, this.external, createLinkElement));
305
331
  }
306
332
  /**
307
333
  * Removes embedded styles from the DOM that were added as HTML `style` elements.
308
334
  * @param styles An array of style content strings.
309
335
  */
310
- removeStyles(styles) {
336
+ removeStyles(styles, urls) {
311
337
  for (const value of styles) {
312
- this.remove(value, this.embeddedStyles);
338
+ this.removeUsage(value, this.inline);
313
339
  }
340
+ urls?.forEach((value) => this.removeUsage(value, this.external));
314
341
  }
315
- add(value, usages, creator) {
342
+ addUsage(value, usages, creator) {
316
343
  // Attempt to get any current usage of the value
317
344
  const record = usages.get(value);
318
345
  // If existing, just increment the usage count
319
346
  if (record) {
347
+ if ((typeof ngDevMode === 'undefined' || ngDevMode) && record.usage === 0) {
348
+ // A usage count of zero indicates a preexisting server generated style.
349
+ // This attribute is solely used for debugging purposes of SSR style reuse.
350
+ record.elements.forEach((element) => element.setAttribute('ng-style-reused', ''));
351
+ }
320
352
  record.usage++;
321
353
  }
322
354
  else {
323
355
  // Otherwise, create an entry to track the elements and add element for each host
324
- usages.set(value, { usage: 1, elements: [...this.hosts].map((host) => creator(host, value)) });
356
+ usages.set(value, {
357
+ usage: 1,
358
+ elements: [...this.hosts].map((host) => this.addElement(host, creator(value, this.doc))),
359
+ });
325
360
  }
326
361
  }
327
- remove(value, usages) {
362
+ removeUsage(value, usages) {
328
363
  // Attempt to get any current usage of the value
329
364
  const record = usages.get(value);
330
365
  // If there is a record, reduce the usage count and if no longer used,
@@ -332,19 +367,14 @@ class SharedStylesHost {
332
367
  if (record) {
333
368
  record.usage--;
334
369
  if (record.usage <= 0) {
335
- removeAll(record.elements);
370
+ removeElements(record.elements);
336
371
  usages.delete(value);
337
372
  }
338
373
  }
339
374
  }
340
375
  ngOnDestroy() {
341
- const serverStyles = this.serverStyles;
342
- if (serverStyles) {
343
- removeAll(serverStyles.values());
344
- serverStyles.clear();
345
- }
346
- for (const [, { elements }] of this.embeddedStyles) {
347
- removeAll(elements);
376
+ for (const [, { elements }] of [...this.inline, ...this.external]) {
377
+ removeElements(elements);
348
378
  }
349
379
  this.hosts.clear();
350
380
  }
@@ -356,8 +386,12 @@ class SharedStylesHost {
356
386
  */
357
387
  addHost(hostNode) {
358
388
  this.hosts.add(hostNode);
359
- for (const [style, { elements }] of this.embeddedStyles) {
360
- elements.push(this.getStyleElement(hostNode, style));
389
+ // Add existing styles to new host
390
+ for (const [style, { elements }] of this.inline) {
391
+ elements.push(this.addElement(hostNode, createStyleElement(style, this.doc)));
392
+ }
393
+ for (const [url, { elements }] of this.external) {
394
+ elements.push(this.addElement(hostNode, createLinkElement(url, this.doc)));
361
395
  }
362
396
  }
363
397
  removeHost(hostNode) {
@@ -375,29 +409,10 @@ class SharedStylesHost {
375
409
  // Insert the element into the DOM with the host node as parent
376
410
  return host.appendChild(element);
377
411
  }
378
- getStyleElement(host, style) {
379
- const styleNodesInDOM = this.serverStyles;
380
- let styleEl = styleNodesInDOM?.get(style);
381
- if (styleEl?.parentNode === host) {
382
- // `styleNodesInDOM` cannot be undefined due to the above `styleNodesInDOM?.get`.
383
- styleNodesInDOM.delete(style);
384
- styleEl.removeAttribute(APP_ID_ATTRIBUTE_NAME);
385
- if (typeof ngDevMode === 'undefined' || ngDevMode) {
386
- // This attribute is solely used for debugging purposes.
387
- styleEl.setAttribute('ng-style-reused', '');
388
- }
389
- }
390
- else {
391
- styleEl = this.doc.createElement('style');
392
- styleEl.textContent = style;
393
- this.addElement(host, styleEl);
394
- }
395
- return styleEl;
396
- }
397
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: SharedStylesHost, deps: [{ token: DOCUMENT }, { token: APP_ID }, { token: CSP_NONCE, optional: true }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
398
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: SharedStylesHost }); }
412
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: SharedStylesHost, deps: [{ token: DOCUMENT }, { token: APP_ID }, { token: CSP_NONCE, optional: true }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
413
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: SharedStylesHost }); }
399
414
  }
400
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: SharedStylesHost, decorators: [{
415
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: SharedStylesHost, decorators: [{
401
416
  type: Injectable
402
417
  }], ctorParameters: () => [{ type: Document, decorators: [{
403
418
  type: Inject,
@@ -511,10 +526,10 @@ class DomRendererFactory2 {
511
526
  ngOnDestroy() {
512
527
  this.rendererByCompId.clear();
513
528
  }
514
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: DomRendererFactory2, deps: [{ token: EventManager }, { token: SharedStylesHost }, { token: APP_ID }, { token: REMOVE_STYLES_ON_COMPONENT_DESTROY }, { token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.NgZone }, { token: CSP_NONCE }], target: i0.ɵɵFactoryTarget.Injectable }); }
515
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: DomRendererFactory2 }); }
529
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: DomRendererFactory2, deps: [{ token: EventManager }, { token: SharedStylesHost }, { token: APP_ID }, { token: REMOVE_STYLES_ON_COMPONENT_DESTROY }, { token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.NgZone }, { token: CSP_NONCE }], target: i0.ɵɵFactoryTarget.Injectable }); }
530
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: DomRendererFactory2 }); }
516
531
  }
517
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: DomRendererFactory2, decorators: [{
532
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: DomRendererFactory2, decorators: [{
518
533
  type: Injectable
519
534
  }], ctorParameters: () => [{ type: EventManager }, { type: SharedStylesHost }, { type: undefined, decorators: [{
520
535
  type: Inject,
@@ -753,15 +768,16 @@ class NoneEncapsulationDomRenderer extends DefaultDomRenderer2 {
753
768
  this.sharedStylesHost = sharedStylesHost;
754
769
  this.removeStylesOnCompDestroy = removeStylesOnCompDestroy;
755
770
  this.styles = compId ? shimStylesContent(compId, component.styles) : component.styles;
771
+ this.styleUrls = component.getExternalStyles?.(compId);
756
772
  }
757
773
  applyStyles() {
758
- this.sharedStylesHost.addStyles(this.styles);
774
+ this.sharedStylesHost.addStyles(this.styles, this.styleUrls);
759
775
  }
760
776
  destroy() {
761
777
  if (!this.removeStylesOnCompDestroy) {
762
778
  return;
763
779
  }
764
- this.sharedStylesHost.removeStyles(this.styles);
780
+ this.sharedStylesHost.removeStyles(this.styles, this.styleUrls);
765
781
  }
766
782
  }
767
783
  class EmulatedEncapsulationDomRenderer2 extends NoneEncapsulationDomRenderer {
@@ -798,36 +814,10 @@ class DomEventsPlugin extends EventManagerPlugin {
798
814
  removeEventListener(target, eventName, callback) {
799
815
  return target.removeEventListener(eventName, callback);
800
816
  }
801
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: DomEventsPlugin, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
802
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: DomEventsPlugin }); }
817
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: DomEventsPlugin, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
818
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: DomEventsPlugin }); }
803
819
  }
804
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: DomEventsPlugin, decorators: [{
805
- type: Injectable
806
- }], ctorParameters: () => [{ type: undefined, decorators: [{
807
- type: Inject,
808
- args: [DOCUMENT]
809
- }] }] });
810
-
811
- class EventDelegationPlugin extends EventManagerPlugin {
812
- constructor(doc) {
813
- super(doc);
814
- this.delegate = inject(ɵGLOBAL_EVENT_DELEGATION, { optional: true });
815
- }
816
- supports(eventName) {
817
- // If `GlobalDelegationEventPlugin` implementation is not provided,
818
- // this plugin is kept disabled.
819
- return this.delegate ? this.delegate.supports(eventName) : false;
820
- }
821
- addEventListener(element, eventName, handler) {
822
- return this.delegate.addEventListener(element, eventName, handler);
823
- }
824
- removeEventListener(element, eventName, callback) {
825
- return this.delegate.removeEventListener(element, eventName, callback);
826
- }
827
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: EventDelegationPlugin, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
828
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: EventDelegationPlugin }); }
829
- }
830
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: EventDelegationPlugin, decorators: [{
820
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: DomEventsPlugin, decorators: [{
831
821
  type: Injectable
832
822
  }], ctorParameters: () => [{ type: undefined, decorators: [{
833
823
  type: Inject,
@@ -996,10 +986,10 @@ class KeyEventsPlugin extends EventManagerPlugin {
996
986
  static _normalizeKey(keyName) {
997
987
  return keyName === 'esc' ? 'escape' : keyName;
998
988
  }
999
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: KeyEventsPlugin, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
1000
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: KeyEventsPlugin }); }
989
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: KeyEventsPlugin, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
990
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: KeyEventsPlugin }); }
1001
991
  }
1002
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: KeyEventsPlugin, decorators: [{
992
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: KeyEventsPlugin, decorators: [{
1003
993
  type: Injectable
1004
994
  }], ctorParameters: () => [{ type: undefined, decorators: [{
1005
995
  type: Inject,
@@ -1163,11 +1153,6 @@ const BROWSER_MODULE_PROVIDERS = [
1163
1153
  deps: [DOCUMENT, NgZone, PLATFORM_ID],
1164
1154
  },
1165
1155
  { provide: EVENT_MANAGER_PLUGINS, useClass: KeyEventsPlugin, multi: true, deps: [DOCUMENT] },
1166
- {
1167
- provide: EVENT_MANAGER_PLUGINS,
1168
- useClass: EventDelegationPlugin,
1169
- multi: true,
1170
- },
1171
1156
  DomRendererFactory2,
1172
1157
  SharedStylesHost,
1173
1158
  EventManager,
@@ -1209,11 +1194,11 @@ class BrowserModule {
1209
1194
  providers: [{ provide: APP_ID, useValue: params.appId }],
1210
1195
  };
1211
1196
  }
1212
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: BrowserModule, deps: [{ token: BROWSER_MODULE_PROVIDERS_MARKER, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
1213
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-next.7", ngImport: i0, type: BrowserModule, exports: [CommonModule, ApplicationModule] }); }
1214
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: BrowserModule, providers: [...BROWSER_MODULE_PROVIDERS, ...TESTABILITY_PROVIDERS], imports: [CommonModule, ApplicationModule] }); }
1197
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: BrowserModule, deps: [{ token: BROWSER_MODULE_PROVIDERS_MARKER, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
1198
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-next.8", ngImport: i0, type: BrowserModule, exports: [CommonModule, ApplicationModule] }); }
1199
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: BrowserModule, providers: [...BROWSER_MODULE_PROVIDERS, ...TESTABILITY_PROVIDERS], imports: [CommonModule, ApplicationModule] }); }
1215
1200
  }
1216
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: BrowserModule, decorators: [{
1201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: BrowserModule, decorators: [{
1217
1202
  type: NgModule,
1218
1203
  args: [{
1219
1204
  providers: [...BROWSER_MODULE_PROVIDERS, ...TESTABILITY_PROVIDERS],
@@ -1377,10 +1362,10 @@ class Meta {
1377
1362
  _getMetaKeyMap(prop) {
1378
1363
  return META_KEYS_MAP[prop] || prop;
1379
1364
  }
1380
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: Meta, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
1381
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: Meta, providedIn: 'root' }); }
1365
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: Meta, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
1366
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: Meta, providedIn: 'root' }); }
1382
1367
  }
1383
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: Meta, decorators: [{
1368
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: Meta, decorators: [{
1384
1369
  type: Injectable,
1385
1370
  args: [{ providedIn: 'root' }]
1386
1371
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -1421,10 +1406,10 @@ class Title {
1421
1406
  setTitle(newTitle) {
1422
1407
  this._doc.title = newTitle || '';
1423
1408
  }
1424
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: Title, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
1425
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: Title, providedIn: 'root' }); }
1409
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: Title, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
1410
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: Title, providedIn: 'root' }); }
1426
1411
  }
1427
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: Title, decorators: [{
1412
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: Title, decorators: [{
1428
1413
  type: Injectable,
1429
1414
  args: [{ providedIn: 'root' }]
1430
1415
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -1688,10 +1673,10 @@ class HammerGestureConfig {
1688
1673
  }
1689
1674
  return mc;
1690
1675
  }
1691
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: HammerGestureConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1692
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: HammerGestureConfig }); }
1676
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: HammerGestureConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1677
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: HammerGestureConfig }); }
1693
1678
  }
1694
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: HammerGestureConfig, decorators: [{
1679
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: HammerGestureConfig, decorators: [{
1695
1680
  type: Injectable
1696
1681
  }] });
1697
1682
  /**
@@ -1784,10 +1769,10 @@ class HammerGesturesPlugin extends EventManagerPlugin {
1784
1769
  isCustomEvent(eventName) {
1785
1770
  return this._config.events.indexOf(eventName) > -1;
1786
1771
  }
1787
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: HammerGesturesPlugin, deps: [{ token: DOCUMENT }, { token: HAMMER_GESTURE_CONFIG }, { token: i0.ɵConsole }, { token: HAMMER_LOADER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
1788
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: HammerGesturesPlugin }); }
1772
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: HammerGesturesPlugin, deps: [{ token: DOCUMENT }, { token: HAMMER_GESTURE_CONFIG }, { token: i0.ɵConsole }, { token: HAMMER_LOADER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
1773
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: HammerGesturesPlugin }); }
1789
1774
  }
1790
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: HammerGesturesPlugin, decorators: [{
1775
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: HammerGesturesPlugin, decorators: [{
1791
1776
  type: Injectable
1792
1777
  }], ctorParameters: () => [{ type: undefined, decorators: [{
1793
1778
  type: Inject,
@@ -1813,9 +1798,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.7",
1813
1798
  * @publicApi
1814
1799
  */
1815
1800
  class HammerModule {
1816
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: HammerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1817
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-next.7", ngImport: i0, type: HammerModule }); }
1818
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: HammerModule, providers: [
1801
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: HammerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1802
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-next.8", ngImport: i0, type: HammerModule }); }
1803
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: HammerModule, providers: [
1819
1804
  {
1820
1805
  provide: EVENT_MANAGER_PLUGINS,
1821
1806
  useClass: HammerGesturesPlugin,
@@ -1825,7 +1810,7 @@ class HammerModule {
1825
1810
  { provide: HAMMER_GESTURE_CONFIG, useClass: HammerGestureConfig, deps: [] },
1826
1811
  ] }); }
1827
1812
  }
1828
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: HammerModule, decorators: [{
1813
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: HammerModule, decorators: [{
1829
1814
  type: NgModule,
1830
1815
  args: [{
1831
1816
  providers: [
@@ -1872,10 +1857,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.7",
1872
1857
  * @publicApi
1873
1858
  */
1874
1859
  class DomSanitizer {
1875
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: DomSanitizer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1876
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: DomSanitizer, providedIn: 'root', useExisting: i0.forwardRef(() => DomSanitizerImpl) }); }
1860
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: DomSanitizer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1861
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: DomSanitizer, providedIn: 'root', useExisting: i0.forwardRef(() => DomSanitizerImpl) }); }
1877
1862
  }
1878
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: DomSanitizer, decorators: [{
1863
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: DomSanitizer, decorators: [{
1879
1864
  type: Injectable,
1880
1865
  args: [{ providedIn: 'root', useExisting: forwardRef(() => DomSanitizerImpl) }]
1881
1866
  }] });
@@ -1937,10 +1922,10 @@ class DomSanitizerImpl extends DomSanitizer {
1937
1922
  bypassSecurityTrustResourceUrl(value) {
1938
1923
  return ɵbypassSanitizationTrustResourceUrl(value);
1939
1924
  }
1940
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: DomSanitizerImpl, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
1941
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: DomSanitizerImpl, providedIn: 'root' }); }
1925
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: DomSanitizerImpl, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
1926
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: DomSanitizerImpl, providedIn: 'root' }); }
1942
1927
  }
1943
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.7", ngImport: i0, type: DomSanitizerImpl, decorators: [{
1928
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: DomSanitizerImpl, decorators: [{
1944
1929
  type: Injectable,
1945
1930
  args: [{ providedIn: 'root' }]
1946
1931
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -2130,7 +2115,7 @@ function provideClientHydration(...features) {
2130
2115
  /**
2131
2116
  * @publicApi
2132
2117
  */
2133
- const VERSION = new Version('19.0.0-next.7');
2118
+ const VERSION = new Version('19.0.0-next.8');
2134
2119
 
2135
2120
  /**
2136
2121
  * @module