@angular/platform-browser 19.0.0-next.1 → 19.0.0-next.11

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 (62) hide show
  1. package/LICENSE +21 -0
  2. package/animations/async/index.d.ts +10 -1
  3. package/animations/index.d.ts +1 -1
  4. package/fesm2022/animations/async.mjs +25 -9
  5. package/fesm2022/animations/async.mjs.map +1 -1
  6. package/fesm2022/animations.mjs +12 -12
  7. package/fesm2022/animations.mjs.map +1 -1
  8. package/fesm2022/platform-browser.mjs +215 -206
  9. package/fesm2022/platform-browser.mjs.map +1 -1
  10. package/fesm2022/testing.mjs +5 -5
  11. package/fesm2022/testing.mjs.map +1 -1
  12. package/index.d.ts +70 -35
  13. package/package.json +4 -12
  14. package/testing/index.d.ts +1 -1
  15. package/esm2022/animations/animations.mjs +0 -5
  16. package/esm2022/animations/async/async.mjs +0 -5
  17. package/esm2022/animations/async/index.mjs +0 -13
  18. package/esm2022/animations/async/public_api.mjs +0 -14
  19. package/esm2022/animations/async/src/async-animations.mjs +0 -15
  20. package/esm2022/animations/async/src/async_animation_renderer.mjs +0 -207
  21. package/esm2022/animations/async/src/private_export.mjs +0 -9
  22. package/esm2022/animations/async/src/providers.mjs +0 -55
  23. package/esm2022/animations/index.mjs +0 -13
  24. package/esm2022/animations/public_api.mjs +0 -14
  25. package/esm2022/animations/src/animations.mjs +0 -16
  26. package/esm2022/animations/src/module.mjs +0 -123
  27. package/esm2022/animations/src/private_export.mjs +0 -9
  28. package/esm2022/animations/src/providers.mjs +0 -66
  29. package/esm2022/index.mjs +0 -13
  30. package/esm2022/platform-browser.mjs +0 -5
  31. package/esm2022/public_api.mjs +0 -15
  32. package/esm2022/src/browser/browser_adapter.mjs +0 -86
  33. package/esm2022/src/browser/generic_browser_adapter.mjs +0 -21
  34. package/esm2022/src/browser/meta.mjs +0 -176
  35. package/esm2022/src/browser/testability.mjs +0 -57
  36. package/esm2022/src/browser/title.mjs +0 -48
  37. package/esm2022/src/browser/tools/common_tools.mjs +0 -63
  38. package/esm2022/src/browser/tools/tools.mjs +0 -36
  39. package/esm2022/src/browser/xhr.mjs +0 -16
  40. package/esm2022/src/browser.mjs +0 -241
  41. package/esm2022/src/dom/debug/by.mjs +0 -61
  42. package/esm2022/src/dom/dom_renderer.mjs +0 -381
  43. package/esm2022/src/dom/events/dom_events.mjs +0 -37
  44. package/esm2022/src/dom/events/event_delegation.mjs +0 -37
  45. package/esm2022/src/dom/events/event_manager.mjs +0 -91
  46. package/esm2022/src/dom/events/hammer_gestures.mjs +0 -266
  47. package/esm2022/src/dom/events/key_events.mjs +0 -183
  48. package/esm2022/src/dom/shared_styles_host.mjs +0 -161
  49. package/esm2022/src/dom/util.mjs +0 -26
  50. package/esm2022/src/errors.mjs +0 -2
  51. package/esm2022/src/hydration.mjs +0 -183
  52. package/esm2022/src/platform-browser.mjs +0 -20
  53. package/esm2022/src/private_export.mjs +0 -18
  54. package/esm2022/src/security/dom_sanitization_service.mjs +0 -119
  55. package/esm2022/src/version.mjs +0 -18
  56. package/esm2022/testing/index.mjs +0 -13
  57. package/esm2022/testing/public_api.mjs +0 -15
  58. package/esm2022/testing/src/browser.mjs +0 -52
  59. package/esm2022/testing/src/browser_util.mjs +0 -130
  60. package/esm2022/testing/src/matchers.mjs +0 -146
  61. package/esm2022/testing/src/testing.mjs +0 -14
  62. package/esm2022/testing/testing.mjs +0 -5
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v19.0.0-next.1
2
+ * @license Angular v19.0.0-next.11
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, ɵ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, ɵwithIncrementalHydration, 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.1", ngImport: i0, type: BrowserXhr, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
159
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: BrowserXhr }); }
158
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: BrowserXhr, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
159
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: BrowserXhr }); }
160
160
  }
161
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: BrowserXhr, decorators: [{
161
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.11", 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.1", 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.1", ngImport: i0, type: EventManager }); }
223
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.11", 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.11", ngImport: i0, type: EventManager }); }
225
225
  }
226
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: EventManager, decorators: [{
226
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: EventManager, decorators: [{
227
227
  type: Injectable
228
228
  }], ctorParameters: () => [{ type: undefined, decorators: [{
229
229
  type: Inject,
@@ -246,138 +246,173 @@ class EventManagerPlugin {
246
246
 
247
247
  /** The style elements attribute name used to set value of `APP_ID` token. */
248
248
  const APP_ID_ATTRIBUTE_NAME = 'ng-app-id';
249
+ /**
250
+ * Removes all provided elements from the document.
251
+ * @param elements An array of HTML Elements.
252
+ */
253
+ function removeElements(elements) {
254
+ for (const element of elements) {
255
+ element.remove();
256
+ }
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
+ }
269
+ /**
270
+ * Searches a DOM document's head element for style elements with a matching application
271
+ * identifier attribute (`ng-app-id`) to the provide identifier and adds usage records for each.
272
+ * @param doc An HTML DOM document instance.
273
+ * @param appId A string containing an Angular application identifer.
274
+ * @param usages A Map object for tracking style usage.
275
+ */
276
+ function addServerStyles(doc, appId, usages) {
277
+ const styleElements = doc.head?.querySelectorAll(`style[${APP_ID_ATTRIBUTE_NAME}="${appId}"]`);
278
+ if (styleElements) {
279
+ for (const styleElement of styleElements) {
280
+ if (styleElement.textContent) {
281
+ styleElement.removeAttribute(APP_ID_ATTRIBUTE_NAME);
282
+ usages.set(styleElement.textContent, { usage: 0, elements: [styleElement] });
283
+ }
284
+ }
285
+ }
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;
298
+ }
249
299
  class SharedStylesHost {
250
300
  constructor(doc, appId, nonce, platformId = {}) {
251
301
  this.doc = doc;
252
302
  this.appId = appId;
253
303
  this.nonce = nonce;
254
- this.platformId = platformId;
255
- // Maps all registered host nodes to a list of style nodes that have been added to the host node.
256
- this.styleRef = new Map();
257
- this.hostNodes = new Set();
258
- this.styleNodesInDOM = this.collectServerRenderedStyles();
259
- this.platformIsServer = isPlatformServer(platformId);
260
- this.resetHostNodes();
304
+ /**
305
+ * Provides usage information for active inline style content and associated HTML <style> elements.
306
+ * Embedded styles typically originate from the `styles` metadata of a rendered component.
307
+ */
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();
314
+ /**
315
+ * Set of host DOM nodes that will have styles attached.
316
+ */
317
+ this.hosts = new Set();
318
+ this.isServer = isPlatformServer(platformId);
319
+ addServerStyles(doc, appId, this.inline);
320
+ this.hosts.add(doc.head);
261
321
  }
262
- addStyles(styles) {
263
- for (const style of styles) {
264
- const usageCount = this.changeUsageCount(style, 1);
265
- if (usageCount === 1) {
266
- this.onStyleAdded(style);
322
+ /**
323
+ * Adds embedded styles to the DOM via HTML `style` elements.
324
+ * @param styles An array of style content strings.
325
+ */
326
+ addStyles(styles, urls) {
327
+ for (const value of styles) {
328
+ this.addUsage(value, this.inline, createStyleElement);
329
+ }
330
+ urls?.forEach((value) => this.addUsage(value, this.external, createLinkElement));
331
+ }
332
+ /**
333
+ * Removes embedded styles from the DOM that were added as HTML `style` elements.
334
+ * @param styles An array of style content strings.
335
+ */
336
+ removeStyles(styles, urls) {
337
+ for (const value of styles) {
338
+ this.removeUsage(value, this.inline);
339
+ }
340
+ urls?.forEach((value) => this.removeUsage(value, this.external));
341
+ }
342
+ addUsage(value, usages, creator) {
343
+ // Attempt to get any current usage of the value
344
+ const record = usages.get(value);
345
+ // If existing, just increment the usage count
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', ''));
267
351
  }
352
+ record.usage++;
353
+ }
354
+ else {
355
+ // Otherwise, create an entry to track the elements and add element for each host
356
+ usages.set(value, {
357
+ usage: 1,
358
+ elements: [...this.hosts].map((host) => this.addElement(host, creator(value, this.doc))),
359
+ });
268
360
  }
269
361
  }
270
- removeStyles(styles) {
271
- for (const style of styles) {
272
- const usageCount = this.changeUsageCount(style, -1);
273
- if (usageCount <= 0) {
274
- this.onStyleRemoved(style);
362
+ removeUsage(value, usages) {
363
+ // Attempt to get any current usage of the value
364
+ const record = usages.get(value);
365
+ // If there is a record, reduce the usage count and if no longer used,
366
+ // remove from DOM and delete usage record.
367
+ if (record) {
368
+ record.usage--;
369
+ if (record.usage <= 0) {
370
+ removeElements(record.elements);
371
+ usages.delete(value);
275
372
  }
276
373
  }
277
374
  }
278
375
  ngOnDestroy() {
279
- const styleNodesInDOM = this.styleNodesInDOM;
280
- if (styleNodesInDOM) {
281
- styleNodesInDOM.forEach((node) => node.remove());
282
- styleNodesInDOM.clear();
376
+ for (const [, { elements }] of [...this.inline, ...this.external]) {
377
+ removeElements(elements);
283
378
  }
284
- for (const style of this.getAllStyles()) {
285
- this.onStyleRemoved(style);
286
- }
287
- this.resetHostNodes();
379
+ this.hosts.clear();
288
380
  }
381
+ /**
382
+ * Adds a host node to the set of style hosts and adds all existing style usage to
383
+ * the newly added host node.
384
+ *
385
+ * This is currently only used for Shadow DOM encapsulation mode.
386
+ */
289
387
  addHost(hostNode) {
290
- this.hostNodes.add(hostNode);
291
- for (const style of this.getAllStyles()) {
292
- this.addStyleToHost(hostNode, style);
293
- }
294
- }
295
- removeHost(hostNode) {
296
- this.hostNodes.delete(hostNode);
297
- }
298
- getAllStyles() {
299
- return this.styleRef.keys();
300
- }
301
- onStyleAdded(style) {
302
- for (const host of this.hostNodes) {
303
- this.addStyleToHost(host, style);
388
+ this.hosts.add(hostNode);
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)));
304
392
  }
305
- }
306
- onStyleRemoved(style) {
307
- const styleRef = this.styleRef;
308
- styleRef.get(style)?.elements?.forEach((node) => node.remove());
309
- styleRef.delete(style);
310
- }
311
- collectServerRenderedStyles() {
312
- const styles = this.doc.head?.querySelectorAll(`style[${APP_ID_ATTRIBUTE_NAME}="${this.appId}"]`);
313
- if (styles?.length) {
314
- const styleMap = new Map();
315
- styles.forEach((style) => {
316
- if (style.textContent != null) {
317
- styleMap.set(style.textContent, style);
318
- }
319
- });
320
- return styleMap;
393
+ for (const [url, { elements }] of this.external) {
394
+ elements.push(this.addElement(hostNode, createLinkElement(url, this.doc)));
321
395
  }
322
- return null;
323
396
  }
324
- changeUsageCount(style, delta) {
325
- const map = this.styleRef;
326
- if (map.has(style)) {
327
- const styleRefValue = map.get(style);
328
- styleRefValue.usage += delta;
329
- return styleRefValue.usage;
330
- }
331
- map.set(style, { usage: delta, elements: [] });
332
- return delta;
333
- }
334
- getStyleElement(host, style) {
335
- const styleNodesInDOM = this.styleNodesInDOM;
336
- const styleEl = styleNodesInDOM?.get(style);
337
- if (styleEl?.parentNode === host) {
338
- // `styleNodesInDOM` cannot be undefined due to the above `styleNodesInDOM?.get`.
339
- styleNodesInDOM.delete(style);
340
- styleEl.removeAttribute(APP_ID_ATTRIBUTE_NAME);
341
- if (typeof ngDevMode === 'undefined' || ngDevMode) {
342
- // This attribute is solely used for debugging purposes.
343
- styleEl.setAttribute('ng-style-reused', '');
344
- }
345
- return styleEl;
346
- }
347
- else {
348
- const styleEl = this.doc.createElement('style');
349
- if (this.nonce) {
350
- styleEl.setAttribute('nonce', this.nonce);
351
- }
352
- styleEl.textContent = style;
353
- if (this.platformIsServer) {
354
- styleEl.setAttribute(APP_ID_ATTRIBUTE_NAME, this.appId);
355
- }
356
- host.appendChild(styleEl);
357
- return styleEl;
358
- }
397
+ removeHost(hostNode) {
398
+ this.hosts.delete(hostNode);
359
399
  }
360
- addStyleToHost(host, style) {
361
- const styleEl = this.getStyleElement(host, style);
362
- const styleRef = this.styleRef;
363
- const styleElRef = styleRef.get(style)?.elements;
364
- if (styleElRef) {
365
- styleElRef.push(styleEl);
400
+ addElement(host, element) {
401
+ // Add a nonce if present
402
+ if (this.nonce) {
403
+ element.setAttribute('nonce', this.nonce);
366
404
  }
367
- else {
368
- styleRef.set(style, { elements: [styleEl], usage: 1 });
405
+ // Add application identifier when on the server to support client-side reuse
406
+ if (this.isServer) {
407
+ element.setAttribute(APP_ID_ATTRIBUTE_NAME, this.appId);
369
408
  }
409
+ // Insert the element into the DOM with the host node as parent
410
+ return host.appendChild(element);
370
411
  }
371
- resetHostNodes() {
372
- const hostNodes = this.hostNodes;
373
- hostNodes.clear();
374
- // Re-add the head element back since this is the default host.
375
- hostNodes.add(this.doc.head);
376
- }
377
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: SharedStylesHost, deps: [{ token: DOCUMENT }, { token: APP_ID }, { token: CSP_NONCE, optional: true }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
378
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: SharedStylesHost }); }
412
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.11", 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.11", ngImport: i0, type: SharedStylesHost }); }
379
414
  }
380
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: SharedStylesHost, decorators: [{
415
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: SharedStylesHost, decorators: [{
381
416
  type: Injectable
382
417
  }], ctorParameters: () => [{ type: Document, decorators: [{
383
418
  type: Inject,
@@ -491,10 +526,10 @@ class DomRendererFactory2 {
491
526
  ngOnDestroy() {
492
527
  this.rendererByCompId.clear();
493
528
  }
494
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.1", 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 }); }
495
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: DomRendererFactory2 }); }
529
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.11", 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.11", ngImport: i0, type: DomRendererFactory2 }); }
496
531
  }
497
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: DomRendererFactory2, decorators: [{
532
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: DomRendererFactory2, decorators: [{
498
533
  type: Injectable
499
534
  }], ctorParameters: () => [{ type: EventManager }, { type: SharedStylesHost }, { type: undefined, decorators: [{
500
535
  type: Inject,
@@ -733,15 +768,16 @@ class NoneEncapsulationDomRenderer extends DefaultDomRenderer2 {
733
768
  this.sharedStylesHost = sharedStylesHost;
734
769
  this.removeStylesOnCompDestroy = removeStylesOnCompDestroy;
735
770
  this.styles = compId ? shimStylesContent(compId, component.styles) : component.styles;
771
+ this.styleUrls = component.getExternalStyles?.(compId);
736
772
  }
737
773
  applyStyles() {
738
- this.sharedStylesHost.addStyles(this.styles);
774
+ this.sharedStylesHost.addStyles(this.styles, this.styleUrls);
739
775
  }
740
776
  destroy() {
741
777
  if (!this.removeStylesOnCompDestroy) {
742
778
  return;
743
779
  }
744
- this.sharedStylesHost.removeStyles(this.styles);
780
+ this.sharedStylesHost.removeStyles(this.styles, this.styleUrls);
745
781
  }
746
782
  }
747
783
  class EmulatedEncapsulationDomRenderer2 extends NoneEncapsulationDomRenderer {
@@ -778,36 +814,10 @@ class DomEventsPlugin extends EventManagerPlugin {
778
814
  removeEventListener(target, eventName, callback) {
779
815
  return target.removeEventListener(eventName, callback);
780
816
  }
781
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: DomEventsPlugin, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
782
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: DomEventsPlugin }); }
783
- }
784
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: DomEventsPlugin, decorators: [{
785
- type: Injectable
786
- }], ctorParameters: () => [{ type: undefined, decorators: [{
787
- type: Inject,
788
- args: [DOCUMENT]
789
- }] }] });
790
-
791
- class EventDelegationPlugin extends EventManagerPlugin {
792
- constructor(doc) {
793
- super(doc);
794
- this.delegate = inject(ɵGLOBAL_EVENT_DELEGATION, { optional: true });
795
- }
796
- supports(eventName) {
797
- // If `GlobalDelegationEventPlugin` implementation is not provided,
798
- // this plugin is kept disabled.
799
- return this.delegate ? this.delegate.supports(eventName) : false;
800
- }
801
- addEventListener(element, eventName, handler) {
802
- return this.delegate.addEventListener(element, eventName, handler);
803
- }
804
- removeEventListener(element, eventName, callback) {
805
- return this.delegate.removeEventListener(element, eventName, callback);
806
- }
807
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: EventDelegationPlugin, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
808
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: EventDelegationPlugin }); }
817
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.11", 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.11", ngImport: i0, type: DomEventsPlugin }); }
809
819
  }
810
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: EventDelegationPlugin, decorators: [{
820
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: DomEventsPlugin, decorators: [{
811
821
  type: Injectable
812
822
  }], ctorParameters: () => [{ type: undefined, decorators: [{
813
823
  type: Inject,
@@ -976,10 +986,10 @@ class KeyEventsPlugin extends EventManagerPlugin {
976
986
  static _normalizeKey(keyName) {
977
987
  return keyName === 'esc' ? 'escape' : keyName;
978
988
  }
979
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: KeyEventsPlugin, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
980
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: KeyEventsPlugin }); }
989
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.11", 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.11", ngImport: i0, type: KeyEventsPlugin }); }
981
991
  }
982
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: KeyEventsPlugin, decorators: [{
992
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: KeyEventsPlugin, decorators: [{
983
993
  type: Injectable
984
994
  }], ctorParameters: () => [{ type: undefined, decorators: [{
985
995
  type: Inject,
@@ -1143,11 +1153,6 @@ const BROWSER_MODULE_PROVIDERS = [
1143
1153
  deps: [DOCUMENT, NgZone, PLATFORM_ID],
1144
1154
  },
1145
1155
  { provide: EVENT_MANAGER_PLUGINS, useClass: KeyEventsPlugin, multi: true, deps: [DOCUMENT] },
1146
- {
1147
- provide: EVENT_MANAGER_PLUGINS,
1148
- useClass: EventDelegationPlugin,
1149
- multi: true,
1150
- },
1151
1156
  DomRendererFactory2,
1152
1157
  SharedStylesHost,
1153
1158
  EventManager,
@@ -1173,27 +1178,11 @@ class BrowserModule {
1173
1178
  `to common directives such as NgIf and NgFor, import the \`CommonModule\` instead.`);
1174
1179
  }
1175
1180
  }
1176
- /**
1177
- * Configures a browser-based app to transition from a server-rendered app, if
1178
- * one is present on the page.
1179
- *
1180
- * @param params An object containing an identifier for the app to transition.
1181
- * The ID must match between the client and server versions of the app.
1182
- * @returns The reconfigured `BrowserModule` to import into the app's root `AppModule`.
1183
- *
1184
- * @deprecated Use {@link APP_ID} instead to set the application ID.
1185
- */
1186
- static withServerTransition(params) {
1187
- return {
1188
- ngModule: BrowserModule,
1189
- providers: [{ provide: APP_ID, useValue: params.appId }],
1190
- };
1191
- }
1192
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: BrowserModule, deps: [{ token: BROWSER_MODULE_PROVIDERS_MARKER, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
1193
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-next.1", ngImport: i0, type: BrowserModule, exports: [CommonModule, ApplicationModule] }); }
1194
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: BrowserModule, providers: [...BROWSER_MODULE_PROVIDERS, ...TESTABILITY_PROVIDERS], imports: [CommonModule, ApplicationModule] }); }
1181
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: BrowserModule, deps: [{ token: BROWSER_MODULE_PROVIDERS_MARKER, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
1182
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-next.11", ngImport: i0, type: BrowserModule, exports: [CommonModule, ApplicationModule] }); }
1183
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: BrowserModule, providers: [...BROWSER_MODULE_PROVIDERS, ...TESTABILITY_PROVIDERS], imports: [CommonModule, ApplicationModule] }); }
1195
1184
  }
1196
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: BrowserModule, decorators: [{
1185
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: BrowserModule, decorators: [{
1197
1186
  type: NgModule,
1198
1187
  args: [{
1199
1188
  providers: [...BROWSER_MODULE_PROVIDERS, ...TESTABILITY_PROVIDERS],
@@ -1357,10 +1346,10 @@ class Meta {
1357
1346
  _getMetaKeyMap(prop) {
1358
1347
  return META_KEYS_MAP[prop] || prop;
1359
1348
  }
1360
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: Meta, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
1361
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: Meta, providedIn: 'root' }); }
1349
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: Meta, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
1350
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: Meta, providedIn: 'root' }); }
1362
1351
  }
1363
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: Meta, decorators: [{
1352
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: Meta, decorators: [{
1364
1353
  type: Injectable,
1365
1354
  args: [{ providedIn: 'root' }]
1366
1355
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -1401,10 +1390,10 @@ class Title {
1401
1390
  setTitle(newTitle) {
1402
1391
  this._doc.title = newTitle || '';
1403
1392
  }
1404
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: Title, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
1405
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: Title, providedIn: 'root' }); }
1393
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: Title, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
1394
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: Title, providedIn: 'root' }); }
1406
1395
  }
1407
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: Title, decorators: [{
1396
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: Title, decorators: [{
1408
1397
  type: Injectable,
1409
1398
  args: [{ providedIn: 'root' }]
1410
1399
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -1668,10 +1657,10 @@ class HammerGestureConfig {
1668
1657
  }
1669
1658
  return mc;
1670
1659
  }
1671
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: HammerGestureConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1672
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: HammerGestureConfig }); }
1660
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: HammerGestureConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1661
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: HammerGestureConfig }); }
1673
1662
  }
1674
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: HammerGestureConfig, decorators: [{
1663
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: HammerGestureConfig, decorators: [{
1675
1664
  type: Injectable
1676
1665
  }] });
1677
1666
  /**
@@ -1764,10 +1753,10 @@ class HammerGesturesPlugin extends EventManagerPlugin {
1764
1753
  isCustomEvent(eventName) {
1765
1754
  return this._config.events.indexOf(eventName) > -1;
1766
1755
  }
1767
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: HammerGesturesPlugin, deps: [{ token: DOCUMENT }, { token: HAMMER_GESTURE_CONFIG }, { token: i0.ɵConsole }, { token: HAMMER_LOADER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
1768
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: HammerGesturesPlugin }); }
1756
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: HammerGesturesPlugin, deps: [{ token: DOCUMENT }, { token: HAMMER_GESTURE_CONFIG }, { token: i0.ɵConsole }, { token: HAMMER_LOADER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
1757
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: HammerGesturesPlugin }); }
1769
1758
  }
1770
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: HammerGesturesPlugin, decorators: [{
1759
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: HammerGesturesPlugin, decorators: [{
1771
1760
  type: Injectable
1772
1761
  }], ctorParameters: () => [{ type: undefined, decorators: [{
1773
1762
  type: Inject,
@@ -1793,9 +1782,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.1",
1793
1782
  * @publicApi
1794
1783
  */
1795
1784
  class HammerModule {
1796
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: HammerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1797
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-next.1", ngImport: i0, type: HammerModule }); }
1798
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: HammerModule, providers: [
1785
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: HammerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1786
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-next.11", ngImport: i0, type: HammerModule }); }
1787
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: HammerModule, providers: [
1799
1788
  {
1800
1789
  provide: EVENT_MANAGER_PLUGINS,
1801
1790
  useClass: HammerGesturesPlugin,
@@ -1805,7 +1794,7 @@ class HammerModule {
1805
1794
  { provide: HAMMER_GESTURE_CONFIG, useClass: HammerGestureConfig, deps: [] },
1806
1795
  ] }); }
1807
1796
  }
1808
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: HammerModule, decorators: [{
1797
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: HammerModule, decorators: [{
1809
1798
  type: NgModule,
1810
1799
  args: [{
1811
1800
  providers: [
@@ -1852,10 +1841,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.1",
1852
1841
  * @publicApi
1853
1842
  */
1854
1843
  class DomSanitizer {
1855
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: DomSanitizer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1856
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: DomSanitizer, providedIn: 'root', useExisting: i0.forwardRef(() => DomSanitizerImpl) }); }
1844
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: DomSanitizer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1845
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: DomSanitizer, providedIn: 'root', useExisting: i0.forwardRef(() => DomSanitizerImpl) }); }
1857
1846
  }
1858
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: DomSanitizer, decorators: [{
1847
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: DomSanitizer, decorators: [{
1859
1848
  type: Injectable,
1860
1849
  args: [{ providedIn: 'root', useExisting: forwardRef(() => DomSanitizerImpl) }]
1861
1850
  }] });
@@ -1917,10 +1906,10 @@ class DomSanitizerImpl extends DomSanitizer {
1917
1906
  bypassSecurityTrustResourceUrl(value) {
1918
1907
  return ɵbypassSanitizationTrustResourceUrl(value);
1919
1908
  }
1920
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: DomSanitizerImpl, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
1921
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: DomSanitizerImpl, providedIn: 'root' }); }
1909
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: DomSanitizerImpl, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
1910
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: DomSanitizerImpl, providedIn: 'root' }); }
1922
1911
  }
1923
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: DomSanitizerImpl, decorators: [{
1912
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.11", ngImport: i0, type: DomSanitizerImpl, decorators: [{
1924
1913
  type: Injectable,
1925
1914
  args: [{ providedIn: 'root' }]
1926
1915
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -1940,6 +1929,7 @@ var HydrationFeatureKind;
1940
1929
  HydrationFeatureKind[HydrationFeatureKind["HttpTransferCacheOptions"] = 1] = "HttpTransferCacheOptions";
1941
1930
  HydrationFeatureKind[HydrationFeatureKind["I18nSupport"] = 2] = "I18nSupport";
1942
1931
  HydrationFeatureKind[HydrationFeatureKind["EventReplay"] = 3] = "EventReplay";
1932
+ HydrationFeatureKind[HydrationFeatureKind["IncrementalHydration"] = 4] = "IncrementalHydration";
1943
1933
  })(HydrationFeatureKind || (HydrationFeatureKind = {}));
1944
1934
  /**
1945
1935
  * Helper function to create an object that represents a Hydration feature.
@@ -1959,9 +1949,9 @@ function withNoHttpTransferCache() {
1959
1949
  return hydrationFeature(HydrationFeatureKind.NoHttpTransferCache);
1960
1950
  }
1961
1951
  /**
1962
- * The function accepts a an object, which allows to configure cache parameters,
1952
+ * The function accepts an object, which allows to configure cache parameters,
1963
1953
  * such as which headers should be included (no headers are included by default),
1964
- * wether POST requests should be cached or a callback function to determine if a
1954
+ * whether POST requests should be cached or a callback function to determine if a
1965
1955
  * particular request should be cached.
1966
1956
  *
1967
1957
  * @publicApi
@@ -1993,13 +1983,31 @@ function withI18nSupport() {
1993
1983
  * providers: [provideClientHydration(withEventReplay())]
1994
1984
  * });
1995
1985
  * ```
1996
- * @developerPreview
1997
1986
  * @publicApi
1998
1987
  * @see {@link provideClientHydration}
1999
1988
  */
2000
1989
  function withEventReplay() {
2001
1990
  return hydrationFeature(HydrationFeatureKind.EventReplay, ɵwithEventReplay());
2002
1991
  }
1992
+ /**
1993
+ * Enables support for incremental hydration using the `hydrate` trigger syntax.
1994
+ *
1995
+ * @usageNotes
1996
+ *
1997
+ * Basic example of how you can enable event replay in your application when
1998
+ * `bootstrapApplication` function is used:
1999
+ * ```
2000
+ * bootstrapApplication(AppComponent, {
2001
+ * providers: [provideClientHydration(withIncrementalHydration())]
2002
+ * });
2003
+ * ```
2004
+ * @experimental
2005
+ * @publicApi
2006
+ * @see {@link provideClientHydration}
2007
+ */
2008
+ function withIncrementalHydration() {
2009
+ return hydrationFeature(HydrationFeatureKind.IncrementalHydration, ɵwithIncrementalHydration());
2010
+ }
2003
2011
  /**
2004
2012
  * Returns an `ENVIRONMENT_INITIALIZER` token setup with a function
2005
2013
  * that verifies whether compatible ZoneJS was used in an application
@@ -2011,9 +2019,10 @@ function provideZoneJsCompatibilityDetector() {
2011
2019
  provide: ENVIRONMENT_INITIALIZER,
2012
2020
  useValue: () => {
2013
2021
  const ngZone = inject(NgZone);
2022
+ const isZoneless = inject(ɵZONELESS_ENABLED);
2014
2023
  // Checking `ngZone instanceof NgZone` would be insufficient here,
2015
2024
  // because custom implementations might use NgZone as a base class.
2016
- if (ngZone.constructor !== NgZone) {
2025
+ if (!isZoneless && ngZone.constructor !== NgZone) {
2017
2026
  const console = inject(ɵConsole);
2018
2027
  const message = ɵformatRuntimeError(-5000 /* RuntimeErrorCode.UNSUPPORTED_ZONEJS_INSTANCE */, 'Angular detected that hydration was enabled for an application ' +
2019
2028
  'that uses a custom or a noop Zone.js implementation. ' +
@@ -2110,7 +2119,7 @@ function provideClientHydration(...features) {
2110
2119
  /**
2111
2120
  * @publicApi
2112
2121
  */
2113
- const VERSION = new Version('19.0.0-next.1');
2122
+ const VERSION = new Version('19.0.0-next.11');
2114
2123
 
2115
2124
  /**
2116
2125
  * @module
@@ -2125,5 +2134,5 @@ const VERSION = new Version('19.0.0-next.1');
2125
2134
  * Generated bundle index. Do not edit.
2126
2135
  */
2127
2136
 
2128
- export { BrowserModule, By, DomSanitizer, EVENT_MANAGER_PLUGINS, EventManager, EventManagerPlugin, HAMMER_GESTURE_CONFIG, HAMMER_LOADER, HammerGestureConfig, HammerModule, HydrationFeatureKind, Meta, REMOVE_STYLES_ON_COMPONENT_DESTROY, Title, VERSION, bootstrapApplication, createApplication, disableDebugTools, enableDebugTools, platformBrowser, provideClientHydration, provideProtractorTestingSupport, withEventReplay, withHttpTransferCacheOptions, withI18nSupport, withNoHttpTransferCache, BrowserDomAdapter as ɵBrowserDomAdapter, BrowserGetTestability as ɵBrowserGetTestability, DomEventsPlugin as ɵDomEventsPlugin, DomRendererFactory2 as ɵDomRendererFactory2, DomSanitizerImpl as ɵDomSanitizerImpl, HammerGesturesPlugin as ɵHammerGesturesPlugin, INTERNAL_BROWSER_PLATFORM_PROVIDERS as ɵINTERNAL_BROWSER_PLATFORM_PROVIDERS, KeyEventsPlugin as ɵKeyEventsPlugin, SharedStylesHost as ɵSharedStylesHost, initDomAdapter as ɵinitDomAdapter };
2137
+ export { BrowserModule, By, DomSanitizer, EVENT_MANAGER_PLUGINS, EventManager, EventManagerPlugin, HAMMER_GESTURE_CONFIG, HAMMER_LOADER, HammerGestureConfig, HammerModule, HydrationFeatureKind, Meta, REMOVE_STYLES_ON_COMPONENT_DESTROY, Title, VERSION, bootstrapApplication, createApplication, disableDebugTools, enableDebugTools, platformBrowser, provideClientHydration, provideProtractorTestingSupport, withEventReplay, withHttpTransferCacheOptions, withI18nSupport, withIncrementalHydration, withNoHttpTransferCache, BrowserDomAdapter as ɵBrowserDomAdapter, BrowserGetTestability as ɵBrowserGetTestability, DomEventsPlugin as ɵDomEventsPlugin, DomRendererFactory2 as ɵDomRendererFactory2, DomSanitizerImpl as ɵDomSanitizerImpl, HammerGesturesPlugin as ɵHammerGesturesPlugin, INTERNAL_BROWSER_PLATFORM_PROVIDERS as ɵINTERNAL_BROWSER_PLATFORM_PROVIDERS, KeyEventsPlugin as ɵKeyEventsPlugin, SharedStylesHost as ɵSharedStylesHost, initDomAdapter as ɵinitDomAdapter };
2129
2138
  //# sourceMappingURL=platform-browser.mjs.map