@angular/platform-browser 19.0.0-next.8 → 19.0.0-rc.0

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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v19.0.0-next.8
2
+ * @license Angular v19.0.0-rc.0
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, ɵ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';
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
  /**
@@ -17,10 +17,7 @@ import { ɵwithHttpTransferCache } from '@angular/common/http';
17
17
  * can introduce XSS risks.
18
18
  */
19
19
  class GenericBrowserDomAdapter extends ɵDomAdapter {
20
- constructor() {
21
- super(...arguments);
22
- this.supportsDOMEvents = true;
23
- }
20
+ supportsDOMEvents = true;
24
21
  }
25
22
 
26
23
  /**
@@ -155,10 +152,10 @@ class BrowserXhr {
155
152
  build() {
156
153
  return new XMLHttpRequest();
157
154
  }
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 }); }
155
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: BrowserXhr, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
156
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: BrowserXhr });
160
157
  }
161
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: BrowserXhr, decorators: [{
158
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: BrowserXhr, decorators: [{
162
159
  type: Injectable
163
160
  }] });
164
161
 
@@ -175,12 +172,14 @@ const EVENT_MANAGER_PLUGINS = new InjectionToken(ngDevMode ? 'EventManagerPlugin
175
172
  * @publicApi
176
173
  */
177
174
  class EventManager {
175
+ _zone;
176
+ _plugins;
177
+ _eventNameToPlugin = new Map();
178
178
  /**
179
179
  * Initializes an instance of the event-manager service.
180
180
  */
181
181
  constructor(plugins, _zone) {
182
182
  this._zone = _zone;
183
- this._eventNameToPlugin = new Map();
184
183
  plugins.forEach((plugin) => {
185
184
  plugin.manager = this;
186
185
  });
@@ -220,10 +219,10 @@ class EventManager {
220
219
  this._eventNameToPlugin.set(eventName, plugin);
221
220
  return plugin;
222
221
  }
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 }); }
222
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: EventManager, deps: [{ token: EVENT_MANAGER_PLUGINS }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
223
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: EventManager });
225
224
  }
226
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: EventManager, decorators: [{
225
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: EventManager, decorators: [{
227
226
  type: Injectable
228
227
  }], ctorParameters: () => [{ type: undefined, decorators: [{
229
228
  type: Inject,
@@ -238,10 +237,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8",
238
237
  * @publicApi
239
238
  */
240
239
  class EventManagerPlugin {
240
+ _doc;
241
241
  // TODO: remove (has some usage in G3)
242
242
  constructor(_doc) {
243
243
  this._doc = _doc;
244
244
  }
245
+ // Using non-null assertion because it's set by EventManager's constructor
246
+ manager;
245
247
  }
246
248
 
247
249
  /** The style elements attribute name used to set value of `APP_ID` token. */
@@ -297,24 +299,31 @@ function createLinkElement(url, doc) {
297
299
  return linkElement;
298
300
  }
299
301
  class SharedStylesHost {
302
+ doc;
303
+ appId;
304
+ nonce;
305
+ /**
306
+ * Provides usage information for active inline style content and associated HTML <style> elements.
307
+ * Embedded styles typically originate from the `styles` metadata of a rendered component.
308
+ */
309
+ inline = new Map();
310
+ /**
311
+ * Provides usage information for active external style URLs and the associated HTML <link> elements.
312
+ * External styles typically originate from the `ɵɵExternalStylesFeature` of a rendered component.
313
+ */
314
+ external = new Map();
315
+ /**
316
+ * Set of host DOM nodes that will have styles attached.
317
+ */
318
+ hosts = new Set();
319
+ /**
320
+ * Whether the application code is currently executing on a server.
321
+ */
322
+ isServer;
300
323
  constructor(doc, appId, nonce, platformId = {}) {
301
324
  this.doc = doc;
302
325
  this.appId = appId;
303
326
  this.nonce = nonce;
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
327
  this.isServer = isPlatformServer(platformId);
319
328
  addServerStyles(doc, appId, this.inline);
320
329
  this.hosts.add(doc.head);
@@ -409,10 +418,10 @@ class SharedStylesHost {
409
418
  // Insert the element into the DOM with the host node as parent
410
419
  return host.appendChild(element);
411
420
  }
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 }); }
421
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: SharedStylesHost, deps: [{ token: DOCUMENT }, { token: APP_ID }, { token: CSP_NONCE, optional: true }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
422
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: SharedStylesHost });
414
423
  }
415
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: SharedStylesHost, decorators: [{
424
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: SharedStylesHost, decorators: [{
416
425
  type: Injectable
417
426
  }], ctorParameters: () => [{ type: Document, decorators: [{
418
427
  type: Inject,
@@ -467,6 +476,17 @@ function shimStylesContent(compId, styles) {
467
476
  return styles.map((s) => s.replace(COMPONENT_REGEX, compId));
468
477
  }
469
478
  class DomRendererFactory2 {
479
+ eventManager;
480
+ sharedStylesHost;
481
+ appId;
482
+ removeStylesOnCompDestroy;
483
+ doc;
484
+ platformId;
485
+ ngZone;
486
+ nonce;
487
+ rendererByCompId = new Map();
488
+ defaultRenderer;
489
+ platformIsServer;
470
490
  constructor(eventManager, sharedStylesHost, appId, removeStylesOnCompDestroy, doc, platformId, ngZone, nonce = null) {
471
491
  this.eventManager = eventManager;
472
492
  this.sharedStylesHost = sharedStylesHost;
@@ -476,7 +496,6 @@ class DomRendererFactory2 {
476
496
  this.platformId = platformId;
477
497
  this.ngZone = ngZone;
478
498
  this.nonce = nonce;
479
- this.rendererByCompId = new Map();
480
499
  this.platformIsServer = isPlatformServer(platformId);
481
500
  this.defaultRenderer = new DefaultDomRenderer2(eventManager, doc, ngZone, this.platformIsServer);
482
501
  }
@@ -526,10 +545,10 @@ class DomRendererFactory2 {
526
545
  ngOnDestroy() {
527
546
  this.rendererByCompId.clear();
528
547
  }
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 }); }
548
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", 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 });
549
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: DomRendererFactory2 });
531
550
  }
532
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: DomRendererFactory2, decorators: [{
551
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: DomRendererFactory2, decorators: [{
533
552
  type: Injectable
534
553
  }], ctorParameters: () => [{ type: EventManager }, { type: SharedStylesHost }, { type: undefined, decorators: [{
535
554
  type: Inject,
@@ -548,20 +567,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8",
548
567
  args: [CSP_NONCE]
549
568
  }] }] });
550
569
  class DefaultDomRenderer2 {
570
+ eventManager;
571
+ doc;
572
+ ngZone;
573
+ platformIsServer;
574
+ data = Object.create(null);
575
+ /**
576
+ * By default this renderer throws when encountering synthetic properties
577
+ * This can be disabled for example by the AsyncAnimationRendererFactory
578
+ */
579
+ throwOnSyntheticProps = true;
551
580
  constructor(eventManager, doc, ngZone, platformIsServer) {
552
581
  this.eventManager = eventManager;
553
582
  this.doc = doc;
554
583
  this.ngZone = ngZone;
555
584
  this.platformIsServer = platformIsServer;
556
- this.data = Object.create(null);
557
- /**
558
- * By default this renderer throws when encountering synthetic properties
559
- * This can be disabled for example by the AsyncAnimationRendererFactory
560
- */
561
- this.throwOnSyntheticProps = true;
562
- this.destroyNode = null;
563
585
  }
564
586
  destroy() { }
587
+ destroyNode = null;
565
588
  createElement(name, namespace) {
566
589
  if (namespace) {
567
590
  // TODO: `|| namespace` was added in
@@ -727,6 +750,9 @@ function isTemplateNode(node) {
727
750
  return node.tagName === 'TEMPLATE' && node.content !== undefined;
728
751
  }
729
752
  class ShadowDomRenderer extends DefaultDomRenderer2 {
753
+ sharedStylesHost;
754
+ hostEl;
755
+ shadowRoot;
730
756
  constructor(eventManager, sharedStylesHost, hostEl, component, doc, ngZone, nonce, platformIsServer) {
731
757
  super(eventManager, doc, ngZone, platformIsServer);
732
758
  this.sharedStylesHost = sharedStylesHost;
@@ -763,6 +789,10 @@ class ShadowDomRenderer extends DefaultDomRenderer2 {
763
789
  }
764
790
  }
765
791
  class NoneEncapsulationDomRenderer extends DefaultDomRenderer2 {
792
+ sharedStylesHost;
793
+ removeStylesOnCompDestroy;
794
+ styles;
795
+ styleUrls;
766
796
  constructor(eventManager, sharedStylesHost, component, removeStylesOnCompDestroy, doc, ngZone, platformIsServer, compId) {
767
797
  super(eventManager, doc, ngZone, platformIsServer);
768
798
  this.sharedStylesHost = sharedStylesHost;
@@ -781,6 +811,8 @@ class NoneEncapsulationDomRenderer extends DefaultDomRenderer2 {
781
811
  }
782
812
  }
783
813
  class EmulatedEncapsulationDomRenderer2 extends NoneEncapsulationDomRenderer {
814
+ contentAttr;
815
+ hostAttr;
784
816
  constructor(eventManager, sharedStylesHost, component, appId, removeStylesOnCompDestroy, doc, ngZone, platformIsServer) {
785
817
  const compId = appId + '-' + component.id;
786
818
  super(eventManager, sharedStylesHost, component, removeStylesOnCompDestroy, doc, ngZone, platformIsServer, compId);
@@ -814,10 +846,10 @@ class DomEventsPlugin extends EventManagerPlugin {
814
846
  removeEventListener(target, eventName, callback) {
815
847
  return target.removeEventListener(eventName, callback);
816
848
  }
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 }); }
849
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: DomEventsPlugin, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
850
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: DomEventsPlugin });
819
851
  }
820
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: DomEventsPlugin, decorators: [{
852
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: DomEventsPlugin, decorators: [{
821
853
  type: Injectable
822
854
  }], ctorParameters: () => [{ type: undefined, decorators: [{
823
855
  type: Inject,
@@ -986,10 +1018,10 @@ class KeyEventsPlugin extends EventManagerPlugin {
986
1018
  static _normalizeKey(keyName) {
987
1019
  return keyName === 'esc' ? 'escape' : keyName;
988
1020
  }
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 }); }
1021
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: KeyEventsPlugin, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
1022
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: KeyEventsPlugin });
991
1023
  }
992
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: KeyEventsPlugin, decorators: [{
1024
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: KeyEventsPlugin, decorators: [{
993
1025
  type: Injectable
994
1026
  }], ctorParameters: () => [{ type: undefined, decorators: [{
995
1027
  type: Inject,
@@ -1178,27 +1210,11 @@ class BrowserModule {
1178
1210
  `to common directives such as NgIf and NgFor, import the \`CommonModule\` instead.`);
1179
1211
  }
1180
1212
  }
1181
- /**
1182
- * Configures a browser-based app to transition from a server-rendered app, if
1183
- * one is present on the page.
1184
- *
1185
- * @param params An object containing an identifier for the app to transition.
1186
- * The ID must match between the client and server versions of the app.
1187
- * @returns The reconfigured `BrowserModule` to import into the app's root `AppModule`.
1188
- *
1189
- * @deprecated Use {@link APP_ID} instead to set the application ID.
1190
- */
1191
- static withServerTransition(params) {
1192
- return {
1193
- ngModule: BrowserModule,
1194
- providers: [{ provide: APP_ID, useValue: params.appId }],
1195
- };
1196
- }
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] }); }
1213
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: BrowserModule, deps: [{ token: BROWSER_MODULE_PROVIDERS_MARKER, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule });
1214
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-rc.0", ngImport: i0, type: BrowserModule, exports: [CommonModule, ApplicationModule] });
1215
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: BrowserModule, providers: [...BROWSER_MODULE_PROVIDERS, ...TESTABILITY_PROVIDERS], imports: [CommonModule, ApplicationModule] });
1200
1216
  }
1201
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: BrowserModule, decorators: [{
1217
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: BrowserModule, decorators: [{
1202
1218
  type: NgModule,
1203
1219
  args: [{
1204
1220
  providers: [...BROWSER_MODULE_PROVIDERS, ...TESTABILITY_PROVIDERS],
@@ -1236,6 +1252,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8",
1236
1252
  * @publicApi
1237
1253
  */
1238
1254
  class Meta {
1255
+ _doc;
1256
+ _dom;
1239
1257
  constructor(_doc) {
1240
1258
  this._doc = _doc;
1241
1259
  this._dom = ɵgetDOM();
@@ -1362,10 +1380,10 @@ class Meta {
1362
1380
  _getMetaKeyMap(prop) {
1363
1381
  return META_KEYS_MAP[prop] || prop;
1364
1382
  }
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' }); }
1383
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: Meta, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
1384
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: Meta, providedIn: 'root' });
1367
1385
  }
1368
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: Meta, decorators: [{
1386
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: Meta, decorators: [{
1369
1387
  type: Injectable,
1370
1388
  args: [{ providedIn: 'root' }]
1371
1389
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -1390,6 +1408,7 @@ const META_KEYS_MAP = {
1390
1408
  * @publicApi
1391
1409
  */
1392
1410
  class Title {
1411
+ _doc;
1393
1412
  constructor(_doc) {
1394
1413
  this._doc = _doc;
1395
1414
  }
@@ -1406,10 +1425,10 @@ class Title {
1406
1425
  setTitle(newTitle) {
1407
1426
  this._doc.title = newTitle || '';
1408
1427
  }
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' }); }
1428
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: Title, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
1429
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: Title, providedIn: 'root' });
1411
1430
  }
1412
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: Title, decorators: [{
1431
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: Title, decorators: [{
1413
1432
  type: Injectable,
1414
1433
  args: [{ providedIn: 'root' }]
1415
1434
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -1436,6 +1455,8 @@ function exportNgVar(name, value) {
1436
1455
  }
1437
1456
 
1438
1457
  class ChangeDetectionPerfRecord {
1458
+ msPerTick;
1459
+ numTicks;
1439
1460
  constructor(msPerTick, numTicks) {
1440
1461
  this.msPerTick = msPerTick;
1441
1462
  this.numTicks = numTicks;
@@ -1446,6 +1467,7 @@ class ChangeDetectionPerfRecord {
1446
1467
  * corresponds to the `ng.profiler` in the dev console.
1447
1468
  */
1448
1469
  class AngularProfiler {
1470
+ appRef;
1449
1471
  constructor(ref) {
1450
1472
  this.appRef = ref.injector.get(ApplicationRef);
1451
1473
  }
@@ -1633,31 +1655,37 @@ const HAMMER_LOADER = new InjectionToken('HammerLoader');
1633
1655
  * @publicApi
1634
1656
  */
1635
1657
  class HammerGestureConfig {
1636
- constructor() {
1637
- /**
1638
- * A set of supported event names for gestures to be used in Angular.
1639
- * Angular supports all built-in recognizers, as listed in
1640
- * [HammerJS documentation](https://hammerjs.github.io/).
1641
- */
1642
- this.events = [];
1643
- /**
1644
- * Maps gesture event names to a set of configuration options
1645
- * that specify overrides to the default values for specific properties.
1646
- *
1647
- * The key is a supported event name to be configured,
1648
- * and the options object contains a set of properties, with override values
1649
- * to be applied to the named recognizer event.
1650
- * For example, to disable recognition of the rotate event, specify
1651
- * `{"rotate": {"enable": false}}`.
1652
- *
1653
- * Properties that are not present take the HammerJS default values.
1654
- * For information about which properties are supported for which events,
1655
- * and their allowed and default values, see
1656
- * [HammerJS documentation](https://hammerjs.github.io/).
1657
- *
1658
- */
1659
- this.overrides = {};
1660
- }
1658
+ /**
1659
+ * A set of supported event names for gestures to be used in Angular.
1660
+ * Angular supports all built-in recognizers, as listed in
1661
+ * [HammerJS documentation](https://hammerjs.github.io/).
1662
+ */
1663
+ events = [];
1664
+ /**
1665
+ * Maps gesture event names to a set of configuration options
1666
+ * that specify overrides to the default values for specific properties.
1667
+ *
1668
+ * The key is a supported event name to be configured,
1669
+ * and the options object contains a set of properties, with override values
1670
+ * to be applied to the named recognizer event.
1671
+ * For example, to disable recognition of the rotate event, specify
1672
+ * `{"rotate": {"enable": false}}`.
1673
+ *
1674
+ * Properties that are not present take the HammerJS default values.
1675
+ * For information about which properties are supported for which events,
1676
+ * and their allowed and default values, see
1677
+ * [HammerJS documentation](https://hammerjs.github.io/).
1678
+ *
1679
+ */
1680
+ overrides = {};
1681
+ /**
1682
+ * Properties whose default values can be overridden for a given event.
1683
+ * Different sets of properties apply to different events.
1684
+ * For information about which properties are supported for which events,
1685
+ * and their allowed and default values, see
1686
+ * [HammerJS documentation](https://hammerjs.github.io/).
1687
+ */
1688
+ options;
1661
1689
  /**
1662
1690
  * Creates a [HammerJS Manager](https://hammerjs.github.io/api/#hammermanager)
1663
1691
  * and attaches it to a given HTML element.
@@ -1673,10 +1701,10 @@ class HammerGestureConfig {
1673
1701
  }
1674
1702
  return mc;
1675
1703
  }
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 }); }
1704
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: HammerGestureConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1705
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: HammerGestureConfig });
1678
1706
  }
1679
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: HammerGestureConfig, decorators: [{
1707
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: HammerGestureConfig, decorators: [{
1680
1708
  type: Injectable
1681
1709
  }] });
1682
1710
  /**
@@ -1685,12 +1713,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8",
1685
1713
  * @ngModule HammerModule
1686
1714
  */
1687
1715
  class HammerGesturesPlugin extends EventManagerPlugin {
1716
+ _config;
1717
+ console;
1718
+ loader;
1719
+ _loaderPromise = null;
1688
1720
  constructor(doc, _config, console, loader) {
1689
1721
  super(doc);
1690
1722
  this._config = _config;
1691
1723
  this.console = console;
1692
1724
  this.loader = loader;
1693
- this._loaderPromise = null;
1694
1725
  }
1695
1726
  supports(eventName) {
1696
1727
  if (!EVENT_NAMES.hasOwnProperty(eventName.toLowerCase()) && !this.isCustomEvent(eventName)) {
@@ -1769,10 +1800,10 @@ class HammerGesturesPlugin extends EventManagerPlugin {
1769
1800
  isCustomEvent(eventName) {
1770
1801
  return this._config.events.indexOf(eventName) > -1;
1771
1802
  }
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 }); }
1803
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: HammerGesturesPlugin, deps: [{ token: DOCUMENT }, { token: HAMMER_GESTURE_CONFIG }, { token: i0.ɵConsole }, { token: HAMMER_LOADER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
1804
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: HammerGesturesPlugin });
1774
1805
  }
1775
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: HammerGesturesPlugin, decorators: [{
1806
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: HammerGesturesPlugin, decorators: [{
1776
1807
  type: Injectable
1777
1808
  }], ctorParameters: () => [{ type: undefined, decorators: [{
1778
1809
  type: Inject,
@@ -1798,9 +1829,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8",
1798
1829
  * @publicApi
1799
1830
  */
1800
1831
  class HammerModule {
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: [
1832
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: HammerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1833
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-rc.0", ngImport: i0, type: HammerModule });
1834
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: HammerModule, providers: [
1804
1835
  {
1805
1836
  provide: EVENT_MANAGER_PLUGINS,
1806
1837
  useClass: HammerGesturesPlugin,
@@ -1808,9 +1839,9 @@ class HammerModule {
1808
1839
  deps: [DOCUMENT, HAMMER_GESTURE_CONFIG, ɵConsole, [new Optional(), HAMMER_LOADER]],
1809
1840
  },
1810
1841
  { provide: HAMMER_GESTURE_CONFIG, useClass: HammerGestureConfig, deps: [] },
1811
- ] }); }
1842
+ ] });
1812
1843
  }
1813
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: HammerModule, decorators: [{
1844
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: HammerModule, decorators: [{
1814
1845
  type: NgModule,
1815
1846
  args: [{
1816
1847
  providers: [
@@ -1857,14 +1888,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8",
1857
1888
  * @publicApi
1858
1889
  */
1859
1890
  class DomSanitizer {
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) }); }
1891
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: DomSanitizer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1892
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: DomSanitizer, providedIn: 'root', useExisting: i0.forwardRef(() => DomSanitizerImpl) });
1862
1893
  }
1863
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: DomSanitizer, decorators: [{
1894
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: DomSanitizer, decorators: [{
1864
1895
  type: Injectable,
1865
1896
  args: [{ providedIn: 'root', useExisting: forwardRef(() => DomSanitizerImpl) }]
1866
1897
  }] });
1867
1898
  class DomSanitizerImpl extends DomSanitizer {
1899
+ _doc;
1868
1900
  constructor(_doc) {
1869
1901
  super();
1870
1902
  this._doc = _doc;
@@ -1922,10 +1954,10 @@ class DomSanitizerImpl extends DomSanitizer {
1922
1954
  bypassSecurityTrustResourceUrl(value) {
1923
1955
  return ɵbypassSanitizationTrustResourceUrl(value);
1924
1956
  }
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' }); }
1957
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: DomSanitizerImpl, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
1958
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: DomSanitizerImpl, providedIn: 'root' });
1927
1959
  }
1928
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: DomSanitizerImpl, decorators: [{
1960
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: DomSanitizerImpl, decorators: [{
1929
1961
  type: Injectable,
1930
1962
  args: [{ providedIn: 'root' }]
1931
1963
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -1945,6 +1977,7 @@ var HydrationFeatureKind;
1945
1977
  HydrationFeatureKind[HydrationFeatureKind["HttpTransferCacheOptions"] = 1] = "HttpTransferCacheOptions";
1946
1978
  HydrationFeatureKind[HydrationFeatureKind["I18nSupport"] = 2] = "I18nSupport";
1947
1979
  HydrationFeatureKind[HydrationFeatureKind["EventReplay"] = 3] = "EventReplay";
1980
+ HydrationFeatureKind[HydrationFeatureKind["IncrementalHydration"] = 4] = "IncrementalHydration";
1948
1981
  })(HydrationFeatureKind || (HydrationFeatureKind = {}));
1949
1982
  /**
1950
1983
  * Helper function to create an object that represents a Hydration feature.
@@ -1964,9 +1997,9 @@ function withNoHttpTransferCache() {
1964
1997
  return hydrationFeature(HydrationFeatureKind.NoHttpTransferCache);
1965
1998
  }
1966
1999
  /**
1967
- * The function accepts a an object, which allows to configure cache parameters,
2000
+ * The function accepts an object, which allows to configure cache parameters,
1968
2001
  * such as which headers should be included (no headers are included by default),
1969
- * wether POST requests should be cached or a callback function to determine if a
2002
+ * whether POST requests should be cached or a callback function to determine if a
1970
2003
  * particular request should be cached.
1971
2004
  *
1972
2005
  * @publicApi
@@ -2004,6 +2037,25 @@ function withI18nSupport() {
2004
2037
  function withEventReplay() {
2005
2038
  return hydrationFeature(HydrationFeatureKind.EventReplay, ɵwithEventReplay());
2006
2039
  }
2040
+ /**
2041
+ * Enables support for incremental hydration using the `hydrate` trigger syntax.
2042
+ *
2043
+ * @usageNotes
2044
+ *
2045
+ * Basic example of how you can enable incremental hydration in your application when
2046
+ * the `bootstrapApplication` function is used:
2047
+ * ```
2048
+ * bootstrapApplication(AppComponent, {
2049
+ * providers: [provideClientHydration(withIncrementalHydration())]
2050
+ * });
2051
+ * ```
2052
+ * @experimental
2053
+ * @publicApi
2054
+ * @see {@link provideClientHydration}
2055
+ */
2056
+ function withIncrementalHydration() {
2057
+ return hydrationFeature(HydrationFeatureKind.IncrementalHydration, ɵwithIncrementalHydration());
2058
+ }
2007
2059
  /**
2008
2060
  * Returns an `ENVIRONMENT_INITIALIZER` token setup with a function
2009
2061
  * that verifies whether compatible ZoneJS was used in an application
@@ -2115,7 +2167,7 @@ function provideClientHydration(...features) {
2115
2167
  /**
2116
2168
  * @publicApi
2117
2169
  */
2118
- const VERSION = new Version('19.0.0-next.8');
2170
+ const VERSION = new Version('19.0.0-rc.0');
2119
2171
 
2120
2172
  /**
2121
2173
  * @module
@@ -2130,5 +2182,5 @@ const VERSION = new Version('19.0.0-next.8');
2130
2182
  * Generated bundle index. Do not edit.
2131
2183
  */
2132
2184
 
2133
- 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 };
2185
+ 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 };
2134
2186
  //# sourceMappingURL=platform-browser.mjs.map