@angular/platform-browser 20.2.0-next.6 → 20.2.0-rc.1
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/animations/async/index.d.ts +1 -1
- package/animations/index.d.ts +1 -1
- package/browser.d.d.ts +1 -1
- package/fesm2022/animations/async.mjs +4 -4
- package/fesm2022/animations.mjs +12 -12
- package/fesm2022/browser.mjs +14 -14
- package/fesm2022/dom_renderer.mjs +17 -26
- package/fesm2022/dom_renderer.mjs.map +1 -1
- package/fesm2022/platform-browser.mjs +24 -24
- package/fesm2022/platform-browser.mjs.map +1 -1
- package/fesm2022/testing.mjs +8 -8
- package/index.d.ts +1 -1
- package/package.json +4 -4
- package/testing/index.d.ts +1 -1
package/animations/index.d.ts
CHANGED
package/browser.d.d.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license Angular v20.2.0-
|
2
|
+
* @license Angular v20.2.0-rc.1
|
3
3
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -131,10 +131,10 @@ class AsyncAnimationRendererFactory {
|
|
131
131
|
this._engine?.flush();
|
132
132
|
this.delegate.componentReplaced?.(componentId);
|
133
133
|
}
|
134
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-
|
135
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-
|
134
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: AsyncAnimationRendererFactory, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
|
135
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: AsyncAnimationRendererFactory });
|
136
136
|
}
|
137
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-
|
137
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: AsyncAnimationRendererFactory, decorators: [{
|
138
138
|
type: Injectable
|
139
139
|
}], ctorParameters: () => [{ type: Document }, { type: i0.RendererFactory2 }, { type: i0.NgZone }, { type: undefined }, { type: Promise }] });
|
140
140
|
/**
|
package/fesm2022/animations.mjs
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license Angular v20.2.0-
|
2
|
+
* @license Angular v20.2.0-rc.1
|
3
3
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -23,10 +23,10 @@ class InjectableAnimationEngine extends _AnimationEngine {
|
|
23
23
|
ngOnDestroy() {
|
24
24
|
this.flush();
|
25
25
|
}
|
26
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-
|
27
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-
|
26
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: InjectableAnimationEngine, deps: [{ token: DOCUMENT }, { token: i1.AnimationDriver }, { token: i1.ɵAnimationStyleNormalizer }], target: i0.ɵɵFactoryTarget.Injectable });
|
27
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: InjectableAnimationEngine });
|
28
28
|
}
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: InjectableAnimationEngine, decorators: [{
|
30
30
|
type: Injectable
|
31
31
|
}], ctorParameters: () => [{ type: Document, decorators: [{
|
32
32
|
type: Inject,
|
@@ -107,11 +107,11 @@ class BrowserAnimationsModule {
|
|
107
107
|
: BROWSER_ANIMATIONS_PROVIDERS,
|
108
108
|
};
|
109
109
|
}
|
110
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-
|
111
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.0-
|
112
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.0-
|
110
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: BrowserAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
111
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.0-rc.1", ngImport: i0, type: BrowserAnimationsModule, exports: [BrowserModule] });
|
112
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: BrowserAnimationsModule, providers: BROWSER_ANIMATIONS_PROVIDERS, imports: [BrowserModule] });
|
113
113
|
}
|
114
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-
|
114
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: BrowserAnimationsModule, decorators: [{
|
115
115
|
type: NgModule,
|
116
116
|
args: [{
|
117
117
|
exports: [BrowserModule],
|
@@ -156,11 +156,11 @@ function provideAnimations() {
|
|
156
156
|
* @deprecated 20.2 Use `animate.enter` or `animate.leave` instead. Intent to remove in v23
|
157
157
|
*/
|
158
158
|
class NoopAnimationsModule {
|
159
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-
|
160
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.0-
|
161
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.0-
|
159
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: NoopAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
160
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.0-rc.1", ngImport: i0, type: NoopAnimationsModule, exports: [BrowserModule] });
|
161
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: NoopAnimationsModule, providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS, imports: [BrowserModule] });
|
162
162
|
}
|
163
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-
|
163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: NoopAnimationsModule, decorators: [{
|
164
164
|
type: NgModule,
|
165
165
|
args: [{
|
166
166
|
exports: [BrowserModule],
|
package/fesm2022/browser.mjs
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license Angular v20.2.0-
|
2
|
+
* @license Angular v20.2.0-rc.1
|
3
3
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -141,10 +141,10 @@ class BrowserXhr {
|
|
141
141
|
build() {
|
142
142
|
return new XMLHttpRequest();
|
143
143
|
}
|
144
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-
|
145
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-
|
144
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: BrowserXhr, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
145
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: BrowserXhr });
|
146
146
|
}
|
147
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-
|
147
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: BrowserXhr, decorators: [{
|
148
148
|
type: Injectable
|
149
149
|
}] });
|
150
150
|
|
@@ -164,10 +164,10 @@ class DomEventsPlugin extends EventManagerPlugin {
|
|
164
164
|
removeEventListener(target, eventName, callback, options) {
|
165
165
|
return target.removeEventListener(eventName, callback, options);
|
166
166
|
}
|
167
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-
|
168
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-
|
167
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: DomEventsPlugin, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
168
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: DomEventsPlugin });
|
169
169
|
}
|
170
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-
|
170
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: DomEventsPlugin, decorators: [{
|
171
171
|
type: Injectable
|
172
172
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
173
173
|
type: Inject,
|
@@ -336,10 +336,10 @@ class KeyEventsPlugin extends EventManagerPlugin {
|
|
336
336
|
static _normalizeKey(keyName) {
|
337
337
|
return keyName === 'esc' ? 'escape' : keyName;
|
338
338
|
}
|
339
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-
|
340
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-
|
339
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: KeyEventsPlugin, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
340
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: KeyEventsPlugin });
|
341
341
|
}
|
342
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-
|
342
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: KeyEventsPlugin, decorators: [{
|
343
343
|
type: Injectable
|
344
344
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
345
345
|
type: Inject,
|
@@ -544,11 +544,11 @@ class BrowserModule {
|
|
544
544
|
}
|
545
545
|
}
|
546
546
|
}
|
547
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-
|
548
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.0-
|
549
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.0-
|
547
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: BrowserModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
548
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.0-rc.1", ngImport: i0, type: BrowserModule, exports: [CommonModule, ApplicationModule] });
|
549
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: BrowserModule, providers: [...BROWSER_MODULE_PROVIDERS, ...TESTABILITY_PROVIDERS], imports: [CommonModule, ApplicationModule] });
|
550
550
|
}
|
551
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-
|
551
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: BrowserModule, decorators: [{
|
552
552
|
type: NgModule,
|
553
553
|
args: [{
|
554
554
|
providers: [...BROWSER_MODULE_PROVIDERS, ...TESTABILITY_PROVIDERS],
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license Angular v20.2.0-
|
2
|
+
* @license Angular v20.2.0-rc.1
|
3
3
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -69,10 +69,10 @@ class EventManager {
|
|
69
69
|
this._eventNameToPlugin.set(eventName, plugin);
|
70
70
|
return plugin;
|
71
71
|
}
|
72
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-
|
73
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-
|
72
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: EventManager, deps: [{ token: EVENT_MANAGER_PLUGINS }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
|
73
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: EventManager });
|
74
74
|
}
|
75
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: EventManager, decorators: [{
|
76
76
|
type: Injectable
|
77
77
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
78
78
|
type: Inject,
|
@@ -275,10 +275,10 @@ class SharedStylesHost {
|
|
275
275
|
// Insert the element into the DOM with the host node as parent
|
276
276
|
return host.appendChild(element);
|
277
277
|
}
|
278
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-
|
279
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-
|
278
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: SharedStylesHost, deps: [{ token: DOCUMENT }, { token: APP_ID }, { token: CSP_NONCE, optional: true }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
|
279
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: SharedStylesHost });
|
280
280
|
}
|
281
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-
|
281
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: SharedStylesHost, decorators: [{
|
282
282
|
type: Injectable
|
283
283
|
}], ctorParameters: () => [{ type: Document, decorators: [{
|
284
284
|
type: Inject,
|
@@ -409,8 +409,7 @@ class DomRendererFactory2 {
|
|
409
409
|
}
|
410
410
|
if (typeof ngServerMode !== 'undefined' &&
|
411
411
|
ngServerMode &&
|
412
|
-
|
413
|
-
type.encapsulation === ViewEncapsulation.IsolatedShadowDom)) {
|
412
|
+
type.encapsulation === ViewEncapsulation.ShadowDom) {
|
414
413
|
// Domino does not support shadow DOM.
|
415
414
|
type = { ...type, encapsulation: ViewEncapsulation.Emulated };
|
416
415
|
}
|
@@ -441,9 +440,7 @@ class DomRendererFactory2 {
|
|
441
440
|
renderer = new EmulatedEncapsulationDomRenderer2(eventManager, sharedStylesHost, type, this.appId, removeStylesOnCompDestroy, doc, ngZone, platformIsServer, tracingService, this.registry, this.animationDisabled, this.maxAnimationTimeout);
|
442
441
|
break;
|
443
442
|
case ViewEncapsulation.ShadowDom:
|
444
|
-
return new ShadowDomRenderer(eventManager, element, type, doc, ngZone, this.nonce, platformIsServer, tracingService, this.registry, this.maxAnimationTimeout
|
445
|
-
case ViewEncapsulation.IsolatedShadowDom:
|
446
|
-
return new ShadowDomRenderer(eventManager, element, type, doc, ngZone, this.nonce, platformIsServer, tracingService, this.registry, this.maxAnimationTimeout);
|
443
|
+
return new ShadowDomRenderer(eventManager, sharedStylesHost, element, type, doc, ngZone, this.nonce, platformIsServer, tracingService, this.registry, this.maxAnimationTimeout);
|
447
444
|
default:
|
448
445
|
renderer = new NoneEncapsulationDomRenderer(eventManager, sharedStylesHost, type, removeStylesOnCompDestroy, doc, ngZone, platformIsServer, tracingService, this.registry, this.animationDisabled, this.maxAnimationTimeout);
|
449
446
|
break;
|
@@ -462,10 +459,10 @@ class DomRendererFactory2 {
|
|
462
459
|
componentReplaced(componentId) {
|
463
460
|
this.rendererByCompId.delete(componentId);
|
464
461
|
}
|
465
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-
|
466
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-
|
462
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.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 }, { token: _ANIMATIONS_DISABLED }, { token: MAX_ANIMATION_TIMEOUT }, { token: _TracingService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
463
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: DomRendererFactory2 });
|
467
464
|
}
|
468
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-
|
465
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: DomRendererFactory2, decorators: [{
|
469
466
|
type: Injectable
|
470
467
|
}], ctorParameters: () => [{ type: EventManager }, { type: SharedStylesHost }, { type: undefined, decorators: [{
|
471
468
|
type: Inject,
|
@@ -695,19 +692,15 @@ function isTemplateNode(node) {
|
|
695
692
|
return node.tagName === 'TEMPLATE' && node.content !== undefined;
|
696
693
|
}
|
697
694
|
class ShadowDomRenderer extends DefaultDomRenderer2 {
|
698
|
-
hostEl;
|
699
695
|
sharedStylesHost;
|
696
|
+
hostEl;
|
700
697
|
shadowRoot;
|
701
|
-
constructor(eventManager, hostEl, component, doc, ngZone, nonce, platformIsServer, tracingService, registry, maxAnimationTimeout
|
698
|
+
constructor(eventManager, sharedStylesHost, hostEl, component, doc, ngZone, nonce, platformIsServer, tracingService, registry, maxAnimationTimeout) {
|
702
699
|
super(eventManager, doc, ngZone, platformIsServer, tracingService, registry, maxAnimationTimeout);
|
703
|
-
this.hostEl = hostEl;
|
704
700
|
this.sharedStylesHost = sharedStylesHost;
|
701
|
+
this.hostEl = hostEl;
|
705
702
|
this.shadowRoot = hostEl.attachShadow({ mode: 'open' });
|
706
|
-
|
707
|
-
// This is optional as it is not used by IsolatedShadowDom.
|
708
|
-
if (this.sharedStylesHost) {
|
709
|
-
this.sharedStylesHost.addHost(this.shadowRoot);
|
710
|
-
}
|
703
|
+
this.sharedStylesHost.addHost(this.shadowRoot);
|
711
704
|
let styles = component.styles;
|
712
705
|
if (ngDevMode) {
|
713
706
|
// We only do this in development, as for production users should not add CSS sourcemaps to components.
|
@@ -756,9 +749,7 @@ class ShadowDomRenderer extends DefaultDomRenderer2 {
|
|
756
749
|
return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(node)));
|
757
750
|
}
|
758
751
|
destroy() {
|
759
|
-
|
760
|
-
this.sharedStylesHost.removeHost(this.shadowRoot);
|
761
|
-
}
|
752
|
+
this.sharedStylesHost.removeHost(this.shadowRoot);
|
762
753
|
}
|
763
754
|
}
|
764
755
|
class NoneEncapsulationDomRenderer extends DefaultDomRenderer2 {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"dom_renderer.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/dom/events/event_manager.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/dom/shared_styles_host.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/dom/dom_renderer.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Inject,\n Injectable,\n InjectionToken,\n NgZone,\n ɵRuntimeError as RuntimeError,\n type ListenerOptions,\n} from '@angular/core';\n\nimport {RuntimeErrorCode} from '../../errors';\n\n/**\n * The injection token for plugins of the `EventManager` service.\n *\n * @publicApi\n */\nexport const EVENT_MANAGER_PLUGINS = new InjectionToken<EventManagerPlugin[]>(\n ngDevMode ? 'EventManagerPlugins' : '',\n);\n\n/**\n * An injectable service that provides event management for Angular\n * through a browser plug-in.\n *\n * @publicApi\n */\n@Injectable()\nexport class EventManager {\n private _plugins: EventManagerPlugin[];\n private _eventNameToPlugin = new Map<string, EventManagerPlugin>();\n\n /**\n * Initializes an instance of the event-manager service.\n */\n constructor(\n @Inject(EVENT_MANAGER_PLUGINS) plugins: EventManagerPlugin[],\n private _zone: NgZone,\n ) {\n plugins.forEach((plugin) => {\n plugin.manager = this;\n });\n this._plugins = plugins.slice().reverse();\n }\n\n /**\n * Registers a handler for a specific element and event.\n *\n * @param element The HTML element to receive event notifications.\n * @param eventName The name of the event to listen for.\n * @param handler A function to call when the notification occurs. Receives the\n * event object as an argument.\n * @param options Options that configure how the event listener is bound.\n * @returns A callback function that can be used to remove the handler.\n */\n addEventListener(\n element: HTMLElement,\n eventName: string,\n handler: Function,\n options?: ListenerOptions,\n ): Function {\n const plugin = this._findPluginFor(eventName);\n return plugin.addEventListener(element, eventName, handler, options);\n }\n\n /**\n * Retrieves the compilation zone in which event listeners are registered.\n */\n getZone(): NgZone {\n return this._zone;\n }\n\n /** @internal */\n _findPluginFor(eventName: string): EventManagerPlugin {\n let plugin = this._eventNameToPlugin.get(eventName);\n if (plugin) {\n return plugin;\n }\n\n const plugins = this._plugins;\n plugin = plugins.find((plugin) => plugin.supports(eventName));\n if (!plugin) {\n throw new RuntimeError(\n RuntimeErrorCode.NO_PLUGIN_FOR_EVENT,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `No event manager plugin found for event ${eventName}`,\n );\n }\n\n this._eventNameToPlugin.set(eventName, plugin);\n return plugin;\n }\n}\n\n/**\n * The plugin definition for the `EventManager` class\n *\n * It can be used as a base class to create custom manager plugins, i.e. you can create your own\n * class that extends the `EventManagerPlugin` one.\n *\n * @publicApi\n */\nexport abstract class EventManagerPlugin {\n // TODO: remove (has some usage in G3)\n constructor(private _doc: any) {}\n\n // Using non-null assertion because it's set by EventManager's constructor\n manager!: EventManager;\n\n /**\n * Should return `true` for every event name that should be supported by this plugin\n */\n abstract supports(eventName: string): boolean;\n\n /**\n * Implement the behaviour for the supported events\n */\n abstract addEventListener(\n element: HTMLElement,\n eventName: string,\n handler: Function,\n options?: ListenerOptions,\n ): Function;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {DOCUMENT} from '@angular/common';\nimport {\n APP_ID,\n CSP_NONCE,\n Inject,\n Injectable,\n OnDestroy,\n Optional,\n PLATFORM_ID,\n} from '@angular/core';\n\n/** The style elements attribute name used to set value of `APP_ID` token. */\nconst APP_ID_ATTRIBUTE_NAME = 'ng-app-id';\n\n/**\n * A record of usage for a specific style including all elements added to the DOM\n * that contain a given style.\n */\ninterface UsageRecord<T> {\n elements: T[];\n usage: number;\n}\n\n/**\n * Removes all provided elements from the document.\n * @param elements An array of HTML Elements.\n */\nfunction removeElements(elements: Iterable<HTMLElement>): void {\n for (const element of elements) {\n element.remove();\n }\n}\n\n/**\n * Creates a `style` element with the provided inline style content.\n * @param style A string of the inline style content.\n * @param doc A DOM Document to use to create the element.\n * @returns An HTMLStyleElement instance.\n */\nfunction createStyleElement(style: string, doc: Document): HTMLStyleElement {\n const styleElement = doc.createElement('style');\n styleElement.textContent = style;\n\n return styleElement;\n}\n\n/**\n * Searches a DOM document's head element for style elements with a matching application\n * identifier attribute (`ng-app-id`) to the provide identifier and adds usage records for each.\n * @param doc An HTML DOM document instance.\n * @param appId A string containing an Angular application identifer.\n * @param inline A Map object for tracking inline (defined via `styles` in component decorator) style usage.\n * @param external A Map object for tracking external (defined via `styleUrls` in component decorator) style usage.\n */\nfunction addServerStyles(\n doc: Document,\n appId: string,\n inline: Map<string, UsageRecord<HTMLStyleElement>>,\n external: Map<string, UsageRecord<HTMLLinkElement>>,\n): void {\n const elements = doc.head?.querySelectorAll<HTMLStyleElement | HTMLLinkElement>(\n `style[${APP_ID_ATTRIBUTE_NAME}=\"${appId}\"],link[${APP_ID_ATTRIBUTE_NAME}=\"${appId}\"]`,\n );\n\n if (elements) {\n for (const styleElement of elements) {\n styleElement.removeAttribute(APP_ID_ATTRIBUTE_NAME);\n if (styleElement instanceof HTMLLinkElement) {\n // Only use filename from href\n // The href is build time generated with a unique value to prevent duplicates.\n external.set(styleElement.href.slice(styleElement.href.lastIndexOf('/') + 1), {\n usage: 0,\n elements: [styleElement],\n });\n } else if (styleElement.textContent) {\n inline.set(styleElement.textContent, {usage: 0, elements: [styleElement]});\n }\n }\n }\n}\n\n/**\n * Creates a `link` element for the provided external style URL.\n * @param url A string of the URL for the stylesheet.\n * @param doc A DOM Document to use to create the element.\n * @returns An HTMLLinkElement instance.\n */\nexport function createLinkElement(url: string, doc: Document): HTMLLinkElement {\n const linkElement = doc.createElement('link');\n linkElement.setAttribute('rel', 'stylesheet');\n linkElement.setAttribute('href', url);\n\n return linkElement;\n}\n\n@Injectable()\nexport class SharedStylesHost implements OnDestroy {\n /**\n * Provides usage information for active inline style content and associated HTML <style> elements.\n * Embedded styles typically originate from the `styles` metadata of a rendered component.\n */\n private readonly inline = new Map<string /** content */, UsageRecord<HTMLStyleElement>>();\n\n /**\n * Provides usage information for active external style URLs and the associated HTML <link> elements.\n * External styles typically originate from the `ɵɵExternalStylesFeature` of a rendered component.\n */\n private readonly external = new Map<string /** URL */, UsageRecord<HTMLLinkElement>>();\n\n /**\n * Set of host DOM nodes that will have styles attached.\n */\n private readonly hosts = new Set<Node>();\n\n constructor(\n @Inject(DOCUMENT) private readonly doc: Document,\n @Inject(APP_ID) private readonly appId: string,\n @Inject(CSP_NONCE) @Optional() private readonly nonce?: string | null,\n // Cannot remove it due to backward compatibility\n // (it seems some TGP targets might be calling this constructor directly).\n @Inject(PLATFORM_ID) platformId: object = {},\n ) {\n addServerStyles(doc, appId, this.inline, this.external);\n this.hosts.add(doc.head);\n }\n\n /**\n * Adds embedded styles to the DOM via HTML `style` elements.\n * @param styles An array of style content strings.\n */\n addStyles(styles: string[], urls?: string[]): void {\n for (const value of styles) {\n this.addUsage(value, this.inline, createStyleElement);\n }\n\n urls?.forEach((value) => this.addUsage(value, this.external, createLinkElement));\n }\n\n /**\n * Removes embedded styles from the DOM that were added as HTML `style` elements.\n * @param styles An array of style content strings.\n */\n removeStyles(styles: string[], urls?: string[]): void {\n for (const value of styles) {\n this.removeUsage(value, this.inline);\n }\n\n urls?.forEach((value) => this.removeUsage(value, this.external));\n }\n\n protected addUsage<T extends HTMLElement>(\n value: string,\n usages: Map<string, UsageRecord<T>>,\n creator: (value: string, doc: Document) => T,\n ): void {\n // Attempt to get any current usage of the value\n const record = usages.get(value);\n\n // If existing, just increment the usage count\n if (record) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && record.usage === 0) {\n // A usage count of zero indicates a preexisting server generated style.\n // This attribute is solely used for debugging purposes of SSR style reuse.\n record.elements.forEach((element) => element.setAttribute('ng-style-reused', ''));\n }\n record.usage++;\n } else {\n // Otherwise, create an entry to track the elements and add element for each host\n usages.set(value, {\n usage: 1,\n elements: [...this.hosts].map((host) => this.addElement(host, creator(value, this.doc))),\n });\n }\n }\n\n protected removeUsage<T extends HTMLElement>(\n value: string,\n usages: Map<string, UsageRecord<T>>,\n ): void {\n // Attempt to get any current usage of the value\n const record = usages.get(value);\n\n // If there is a record, reduce the usage count and if no longer used,\n // remove from DOM and delete usage record.\n if (record) {\n record.usage--;\n if (record.usage <= 0) {\n removeElements(record.elements);\n usages.delete(value);\n }\n }\n }\n\n ngOnDestroy(): void {\n for (const [, {elements}] of [...this.inline, ...this.external]) {\n removeElements(elements);\n }\n this.hosts.clear();\n }\n\n /**\n * Adds a host node to the set of style hosts and adds all existing style usage to\n * the newly added host node.\n *\n * This is currently only used for Shadow DOM encapsulation mode.\n */\n addHost(hostNode: Node): void {\n this.hosts.add(hostNode);\n\n // Add existing styles to new host\n for (const [style, {elements}] of this.inline) {\n elements.push(this.addElement(hostNode, createStyleElement(style, this.doc)));\n }\n for (const [url, {elements}] of this.external) {\n elements.push(this.addElement(hostNode, createLinkElement(url, this.doc)));\n }\n }\n\n removeHost(hostNode: Node): void {\n this.hosts.delete(hostNode);\n }\n\n private addElement<T extends HTMLElement>(host: Node, element: T): T {\n // Add a nonce if present\n if (this.nonce) {\n element.setAttribute('nonce', this.nonce);\n }\n\n // Add application identifier when on the server to support client-side reuse\n if (typeof ngServerMode !== 'undefined' && ngServerMode) {\n element.setAttribute(APP_ID_ATTRIBUTE_NAME, this.appId);\n }\n\n // Insert the element into the DOM with the host node as parent\n return host.appendChild(element);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {DOCUMENT, ɵgetDOM as getDOM} from '@angular/common';\nimport {\n APP_ID,\n CSP_NONCE,\n Inject,\n Injectable,\n InjectionToken,\n NgZone,\n OnDestroy,\n PLATFORM_ID,\n Renderer2,\n RendererFactory2,\n RendererStyleFlags2,\n RendererType2,\n ViewEncapsulation,\n ɵRuntimeError as RuntimeError,\n type ListenerOptions,\n ɵTracingService as TracingService,\n ɵTracingSnapshot as TracingSnapshot,\n Optional,\n ɵAnimationRemovalRegistry as AnimationRemovalRegistry,\n ɵgetAnimationElementRemovalRegistry as getAnimationElementRemovalRegistry,\n ɵANIMATIONS_DISABLED as ANIMATIONS_DISABLED,\n MAX_ANIMATION_TIMEOUT,\n} from '@angular/core';\n\nimport {RuntimeErrorCode} from '../errors';\n\nimport {EventManager} from './events/event_manager';\nimport {createLinkElement, SharedStylesHost} from './shared_styles_host';\n\nexport const NAMESPACE_URIS: {[ns: string]: string} = {\n 'svg': 'http://www.w3.org/2000/svg',\n 'xhtml': 'http://www.w3.org/1999/xhtml',\n 'xlink': 'http://www.w3.org/1999/xlink',\n 'xml': 'http://www.w3.org/XML/1998/namespace',\n 'xmlns': 'http://www.w3.org/2000/xmlns/',\n 'math': 'http://www.w3.org/1998/Math/MathML',\n};\n\nconst COMPONENT_REGEX = /%COMP%/g;\nconst SOURCEMAP_URL_REGEXP = /\\/\\*#\\s*sourceMappingURL=(.+?)\\s*\\*\\//;\nconst PROTOCOL_REGEXP = /^https?:/;\n\nexport const COMPONENT_VARIABLE = '%COMP%';\nexport const HOST_ATTR = `_nghost-${COMPONENT_VARIABLE}`;\nexport const CONTENT_ATTR = `_ngcontent-${COMPONENT_VARIABLE}`;\n\n/**\n * The default value for the `REMOVE_STYLES_ON_COMPONENT_DESTROY` DI token.\n */\nconst REMOVE_STYLES_ON_COMPONENT_DESTROY_DEFAULT = true;\n\n/**\n * A DI token that indicates whether styles\n * of destroyed components should be removed from DOM.\n *\n * By default, the value is set to `true`.\n * @publicApi\n */\nexport const REMOVE_STYLES_ON_COMPONENT_DESTROY = new InjectionToken<boolean>(\n ngDevMode ? 'RemoveStylesOnCompDestroy' : '',\n {\n providedIn: 'root',\n factory: () => REMOVE_STYLES_ON_COMPONENT_DESTROY_DEFAULT,\n },\n);\n\nexport function shimContentAttribute(componentShortId: string): string {\n return CONTENT_ATTR.replace(COMPONENT_REGEX, componentShortId);\n}\n\nexport function shimHostAttribute(componentShortId: string): string {\n return HOST_ATTR.replace(COMPONENT_REGEX, componentShortId);\n}\n\nexport function shimStylesContent(compId: string, styles: string[]): string[] {\n return styles.map((s) => s.replace(COMPONENT_REGEX, compId));\n}\n\n/**\n * Prepends a baseHref to the `sourceMappingURL` within the provided CSS content.\n * If the `sourceMappingURL` contains an inline (encoded) map, the function skips processing.\n *\n * @note For inline stylesheets, the `sourceMappingURL` is relative to the page's origin\n * and not the provided baseHref. This function is needed as when accessing the page with a URL\n * containing two or more segments.\n * For example, if the baseHref is set to `/`, and you visit a URL like `http://localhost/foo/bar`,\n * the map would be requested from `http://localhost/foo/bar/comp.css.map` instead of what you'd expect,\n * which is `http://localhost/comp.css.map`. This behavior is corrected by modifying the `sourceMappingURL`\n * to ensure external source maps are loaded relative to the baseHref.\n *\n\n * @param baseHref - The base URL to prepend to the `sourceMappingURL`.\n * @param styles - An array of CSS content strings, each potentially containing a `sourceMappingURL`.\n * @returns The updated array of CSS content strings with modified `sourceMappingURL` values,\n * or the original content if no modification is needed.\n */\nexport function addBaseHrefToCssSourceMap(baseHref: string, styles: string[]): string[] {\n if (!baseHref) {\n return styles;\n }\n\n const absoluteBaseHrefUrl = new URL(baseHref, 'http://localhost');\n\n return styles.map((cssContent) => {\n if (!cssContent.includes('sourceMappingURL=')) {\n return cssContent;\n }\n\n return cssContent.replace(SOURCEMAP_URL_REGEXP, (_, sourceMapUrl) => {\n if (\n sourceMapUrl[0] === '/' ||\n sourceMapUrl.startsWith('data:') ||\n PROTOCOL_REGEXP.test(sourceMapUrl)\n ) {\n return `/*# sourceMappingURL=${sourceMapUrl} */`;\n }\n\n const {pathname: resolvedSourceMapUrl} = new URL(sourceMapUrl, absoluteBaseHrefUrl);\n\n return `/*# sourceMappingURL=${resolvedSourceMapUrl} */`;\n });\n });\n}\n\n@Injectable()\nexport class DomRendererFactory2 implements RendererFactory2, OnDestroy {\n private readonly rendererByCompId = new Map<\n string,\n EmulatedEncapsulationDomRenderer2 | NoneEncapsulationDomRenderer\n >();\n private readonly defaultRenderer: Renderer2;\n private readonly platformIsServer: boolean;\n private registry: AnimationRemovalRegistry;\n\n constructor(\n private readonly eventManager: EventManager,\n private readonly sharedStylesHost: SharedStylesHost,\n @Inject(APP_ID) private readonly appId: string,\n @Inject(REMOVE_STYLES_ON_COMPONENT_DESTROY) private removeStylesOnCompDestroy: boolean,\n @Inject(DOCUMENT) private readonly doc: Document,\n @Inject(PLATFORM_ID) readonly platformId: Object,\n readonly ngZone: NgZone,\n @Inject(CSP_NONCE) private readonly nonce: string | null = null,\n @Inject(ANIMATIONS_DISABLED) private readonly animationDisabled: boolean,\n @Inject(MAX_ANIMATION_TIMEOUT) private readonly maxAnimationTimeout: number,\n @Inject(TracingService)\n @Optional()\n private readonly tracingService: TracingService<TracingSnapshot> | null = null,\n ) {\n this.platformIsServer = typeof ngServerMode !== 'undefined' && ngServerMode;\n this.defaultRenderer = new DefaultDomRenderer2(\n eventManager,\n doc,\n ngZone,\n this.platformIsServer,\n this.tracingService,\n (this.registry = getAnimationElementRemovalRegistry()),\n this.maxAnimationTimeout,\n );\n }\n\n createRenderer(element: any, type: RendererType2 | null): Renderer2 {\n if (!element || !type) {\n return this.defaultRenderer;\n }\n\n if (\n typeof ngServerMode !== 'undefined' &&\n ngServerMode &&\n (type.encapsulation === ViewEncapsulation.ShadowDom ||\n type.encapsulation === ViewEncapsulation.IsolatedShadowDom)\n ) {\n // Domino does not support shadow DOM.\n type = {...type, encapsulation: ViewEncapsulation.Emulated};\n }\n\n const renderer = this.getOrCreateRenderer(element, type);\n // Renderers have different logic due to different encapsulation behaviours.\n // Ex: for emulated, an attribute is added to the element.\n if (renderer instanceof EmulatedEncapsulationDomRenderer2) {\n renderer.applyToHost(element);\n } else if (renderer instanceof NoneEncapsulationDomRenderer) {\n renderer.applyStyles();\n }\n\n return renderer;\n }\n\n private getOrCreateRenderer(element: any, type: RendererType2): Renderer2 {\n const rendererByCompId = this.rendererByCompId;\n let renderer = rendererByCompId.get(type.id);\n\n if (!renderer) {\n const doc = this.doc;\n const ngZone = this.ngZone;\n const eventManager = this.eventManager;\n const sharedStylesHost = this.sharedStylesHost;\n const removeStylesOnCompDestroy = this.removeStylesOnCompDestroy;\n const platformIsServer = this.platformIsServer;\n const tracingService = this.tracingService;\n\n switch (type.encapsulation) {\n case ViewEncapsulation.Emulated:\n renderer = new EmulatedEncapsulationDomRenderer2(\n eventManager,\n sharedStylesHost,\n type,\n this.appId,\n removeStylesOnCompDestroy,\n doc,\n ngZone,\n platformIsServer,\n tracingService,\n this.registry,\n this.animationDisabled,\n this.maxAnimationTimeout,\n );\n break;\n case ViewEncapsulation.ShadowDom:\n return new ShadowDomRenderer(\n eventManager,\n element,\n type,\n doc,\n ngZone,\n this.nonce,\n platformIsServer,\n tracingService,\n this.registry,\n this.maxAnimationTimeout,\n sharedStylesHost,\n );\n case ViewEncapsulation.IsolatedShadowDom:\n return new ShadowDomRenderer(\n eventManager,\n element,\n type,\n doc,\n ngZone,\n this.nonce,\n platformIsServer,\n tracingService,\n this.registry,\n this.maxAnimationTimeout,\n );\n\n default:\n renderer = new NoneEncapsulationDomRenderer(\n eventManager,\n sharedStylesHost,\n type,\n removeStylesOnCompDestroy,\n doc,\n ngZone,\n platformIsServer,\n tracingService,\n this.registry,\n this.animationDisabled,\n this.maxAnimationTimeout,\n );\n break;\n }\n\n rendererByCompId.set(type.id, renderer);\n }\n\n return renderer;\n }\n\n ngOnDestroy() {\n this.rendererByCompId.clear();\n }\n\n /**\n * Used during HMR to clear any cached data about a component.\n * @param componentId ID of the component that is being replaced.\n */\n protected componentReplaced(componentId: string) {\n this.rendererByCompId.delete(componentId);\n }\n}\n\nclass DefaultDomRenderer2 implements Renderer2 {\n data: {[key: string]: any} = Object.create(null);\n\n /**\n * By default this renderer throws when encountering synthetic properties\n * This can be disabled for example by the AsyncAnimationRendererFactory\n */\n throwOnSyntheticProps = true;\n\n constructor(\n private readonly eventManager: EventManager,\n private readonly doc: Document,\n protected readonly ngZone: NgZone,\n private readonly platformIsServer: boolean,\n private readonly tracingService: TracingService<TracingSnapshot> | null,\n protected readonly registry: AnimationRemovalRegistry,\n protected readonly maxAnimationTimeout: number,\n ) {}\n\n destroy(): void {}\n\n destroyNode = null;\n\n createElement(name: string, namespace?: string): any {\n if (namespace) {\n // TODO: `|| namespace` was added in\n // https://github.com/angular/angular/commit/2b9cc8503d48173492c29f5a271b61126104fbdb to\n // support how Ivy passed around the namespace URI rather than short name at the time. It did\n // not, however extend the support to other parts of the system (setAttribute, setAttribute,\n // and the ServerRenderer). We should decide what exactly the semantics for dealing with\n // namespaces should be and make it consistent.\n // Related issues:\n // https://github.com/angular/angular/issues/44028\n // https://github.com/angular/angular/issues/44883\n return this.doc.createElementNS(NAMESPACE_URIS[namespace] || namespace, name);\n }\n\n return this.doc.createElement(name);\n }\n\n createComment(value: string): any {\n return this.doc.createComment(value);\n }\n\n createText(value: string): any {\n return this.doc.createTextNode(value);\n }\n\n appendChild(parent: any, newChild: any): void {\n const targetParent = isTemplateNode(parent) ? parent.content : parent;\n targetParent.appendChild(newChild);\n }\n\n insertBefore(parent: any, newChild: any, refChild: any): void {\n if (parent) {\n const targetParent = isTemplateNode(parent) ? parent.content : parent;\n targetParent.insertBefore(newChild, refChild);\n }\n }\n\n removeChild(_parent: any, oldChild: any): void {\n const {elements} = this.registry;\n if (elements) {\n elements.animate(oldChild, () => oldChild.remove(), this.maxAnimationTimeout);\n return;\n }\n // child was removed\n oldChild.remove();\n }\n\n selectRootElement(selectorOrNode: string | any, preserveContent?: boolean): any {\n let el: any =\n typeof selectorOrNode === 'string' ? this.doc.querySelector(selectorOrNode) : selectorOrNode;\n if (!el) {\n throw new RuntimeError(\n RuntimeErrorCode.ROOT_NODE_NOT_FOUND,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `The selector \"${selectorOrNode}\" did not match any elements`,\n );\n }\n if (!preserveContent) {\n el.textContent = '';\n }\n return el;\n }\n\n parentNode(node: any): any {\n return node.parentNode;\n }\n\n nextSibling(node: any): any {\n return node.nextSibling;\n }\n\n setAttribute(el: any, name: string, value: string, namespace?: string): void {\n if (namespace) {\n name = namespace + ':' + name;\n const namespaceUri = NAMESPACE_URIS[namespace];\n if (namespaceUri) {\n el.setAttributeNS(namespaceUri, name, value);\n } else {\n el.setAttribute(name, value);\n }\n } else {\n el.setAttribute(name, value);\n }\n }\n\n removeAttribute(el: any, name: string, namespace?: string): void {\n if (namespace) {\n const namespaceUri = NAMESPACE_URIS[namespace];\n if (namespaceUri) {\n el.removeAttributeNS(namespaceUri, name);\n } else {\n el.removeAttribute(`${namespace}:${name}`);\n }\n } else {\n el.removeAttribute(name);\n }\n }\n\n addClass(el: any, name: string): void {\n el.classList.add(name);\n }\n\n removeClass(el: any, name: string): void {\n el.classList.remove(name);\n }\n\n setStyle(el: any, style: string, value: any, flags: RendererStyleFlags2): void {\n if (flags & (RendererStyleFlags2.DashCase | RendererStyleFlags2.Important)) {\n el.style.setProperty(style, value, flags & RendererStyleFlags2.Important ? 'important' : '');\n } else {\n el.style[style] = value;\n }\n }\n\n removeStyle(el: any, style: string, flags: RendererStyleFlags2): void {\n if (flags & RendererStyleFlags2.DashCase) {\n // removeProperty has no effect when used on camelCased properties.\n el.style.removeProperty(style);\n } else {\n el.style[style] = '';\n }\n }\n\n setProperty(el: any, name: string, value: any): void {\n if (el == null) {\n return;\n }\n\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n this.throwOnSyntheticProps &&\n checkNoSyntheticProp(name, 'property');\n el[name] = value;\n }\n\n setValue(node: any, value: string): void {\n node.nodeValue = value;\n }\n\n listen(\n target: 'window' | 'document' | 'body' | any,\n event: string,\n callback: (event: any) => boolean,\n options?: ListenerOptions,\n ): () => void {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n this.throwOnSyntheticProps &&\n checkNoSyntheticProp(event, 'listener');\n if (typeof target === 'string') {\n target = getDOM().getGlobalEventTarget(this.doc, target);\n if (!target) {\n throw new RuntimeError(\n RuntimeErrorCode.UNSUPPORTED_EVENT_TARGET,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `Unsupported event target ${target} for event ${event}`,\n );\n }\n }\n\n let wrappedCallback = this.decoratePreventDefault(callback);\n\n if (this.tracingService?.wrapEventListener) {\n wrappedCallback = this.tracingService.wrapEventListener(target, event, wrappedCallback);\n }\n\n return this.eventManager.addEventListener(\n target,\n event,\n wrappedCallback,\n options,\n ) as VoidFunction;\n }\n\n private decoratePreventDefault(eventHandler: Function): Function {\n // `DebugNode.triggerEventHandler` needs to know if the listener was created with\n // decoratePreventDefault or is a listener added outside the Angular context so it can handle\n // the two differently. In the first case, the special '__ngUnwrap__' token is passed to the\n // unwrap the listener (see below).\n return (event: any) => {\n // Ivy uses '__ngUnwrap__' as a special token that allows us to unwrap the function\n // so that it can be invoked programmatically by `DebugNode.triggerEventHandler`. The\n // debug_node can inspect the listener toString contents for the existence of this special\n // token. Because the token is a string literal, it is ensured to not be modified by compiled\n // code.\n if (event === '__ngUnwrap__') {\n return eventHandler;\n }\n\n // Run the event handler inside the ngZone because event handlers are not patched\n // by Zone on the server. This is required only for tests.\n const allowDefaultBehavior =\n typeof ngServerMode !== 'undefined' && ngServerMode\n ? this.ngZone.runGuarded(() => eventHandler(event))\n : eventHandler(event);\n if (allowDefaultBehavior === false) {\n event.preventDefault();\n }\n\n return undefined;\n };\n }\n}\n\nconst AT_CHARCODE = (() => '@'.charCodeAt(0))();\n\nfunction checkNoSyntheticProp(name: string, nameKind: string) {\n if (name.charCodeAt(0) === AT_CHARCODE) {\n throw new RuntimeError(\n RuntimeErrorCode.UNEXPECTED_SYNTHETIC_PROPERTY,\n `Unexpected synthetic ${nameKind} ${name} found. Please make sure that:\n - Make sure \\`provideAnimationsAsync()\\`, \\`provideAnimations()\\` or \\`provideNoopAnimations()\\` call was added to a list of providers used to bootstrap an application.\n - There is a corresponding animation configuration named \\`${name}\\` defined in the \\`animations\\` field of the \\`@Component\\` decorator (see https://angular.dev/api/core/Component#animations).`,\n );\n }\n}\n\nfunction isTemplateNode(node: any): node is HTMLTemplateElement {\n return node.tagName === 'TEMPLATE' && node.content !== undefined;\n}\n\nclass ShadowDomRenderer extends DefaultDomRenderer2 {\n private shadowRoot: any;\n\n constructor(\n eventManager: EventManager,\n private hostEl: any,\n component: RendererType2,\n doc: Document,\n ngZone: NgZone,\n nonce: string | null,\n platformIsServer: boolean,\n tracingService: TracingService<TracingSnapshot> | null,\n registry: AnimationRemovalRegistry,\n maxAnimationTimeout: number,\n private sharedStylesHost?: SharedStylesHost,\n ) {\n super(\n eventManager,\n doc,\n ngZone,\n platformIsServer,\n tracingService,\n registry,\n maxAnimationTimeout,\n );\n this.shadowRoot = (hostEl as any).attachShadow({mode: 'open'});\n\n // SharedStylesHost is used to add styles to the shadow root by ShadowDom.\n // This is optional as it is not used by IsolatedShadowDom.\n if (this.sharedStylesHost) {\n this.sharedStylesHost.addHost(this.shadowRoot);\n }\n let styles = component.styles;\n if (ngDevMode) {\n // We only do this in development, as for production users should not add CSS sourcemaps to components.\n const baseHref = getDOM().getBaseHref(doc) ?? '';\n styles = addBaseHrefToCssSourceMap(baseHref, styles);\n }\n\n styles = shimStylesContent(component.id, styles);\n\n for (const style of styles) {\n const styleEl = document.createElement('style');\n\n if (nonce) {\n styleEl.setAttribute('nonce', nonce);\n }\n\n styleEl.textContent = style;\n this.shadowRoot.appendChild(styleEl);\n }\n\n // Apply any external component styles to the shadow root for the component's element.\n // The ShadowDOM renderer uses an alternative execution path for component styles that\n // does not use the SharedStylesHost that other encapsulation modes leverage. Much like\n // the manual addition of embedded styles directly above, any external stylesheets\n // must be manually added here to ensure ShadowDOM components are correctly styled.\n // TODO: Consider reworking the DOM Renderers to consolidate style handling.\n const styleUrls = component.getExternalStyles?.();\n if (styleUrls) {\n for (const styleUrl of styleUrls) {\n const linkEl = createLinkElement(styleUrl, doc);\n if (nonce) {\n linkEl.setAttribute('nonce', nonce);\n }\n this.shadowRoot.appendChild(linkEl);\n }\n }\n }\n\n private nodeOrShadowRoot(node: any): any {\n return node === this.hostEl ? this.shadowRoot : node;\n }\n\n override appendChild(parent: any, newChild: any): void {\n return super.appendChild(this.nodeOrShadowRoot(parent), newChild);\n }\n\n override insertBefore(parent: any, newChild: any, refChild: any): void {\n return super.insertBefore(this.nodeOrShadowRoot(parent), newChild, refChild);\n }\n\n override removeChild(_parent: any, oldChild: any): void {\n return super.removeChild(null, oldChild);\n }\n\n override parentNode(node: any): any {\n return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(node)));\n }\n\n override destroy() {\n if (this.sharedStylesHost) {\n this.sharedStylesHost.removeHost(this.shadowRoot);\n }\n }\n}\n\nclass NoneEncapsulationDomRenderer extends DefaultDomRenderer2 {\n private readonly styles: string[];\n private readonly styleUrls?: string[];\n private readonly _animationDisabled: boolean;\n\n constructor(\n eventManager: EventManager,\n private readonly sharedStylesHost: SharedStylesHost,\n component: RendererType2,\n private removeStylesOnCompDestroy: boolean,\n doc: Document,\n ngZone: NgZone,\n platformIsServer: boolean,\n tracingService: TracingService<TracingSnapshot> | null,\n registry: AnimationRemovalRegistry,\n animationDisabled: boolean,\n maxAnimationTimeout: number,\n compId?: string,\n ) {\n super(\n eventManager,\n doc,\n ngZone,\n platformIsServer,\n tracingService,\n registry,\n maxAnimationTimeout,\n );\n this._animationDisabled = animationDisabled;\n let styles = component.styles;\n if (ngDevMode) {\n // We only do this in development, as for production users should not add CSS sourcemaps to components.\n const baseHref = getDOM().getBaseHref(doc) ?? '';\n styles = addBaseHrefToCssSourceMap(baseHref, styles);\n }\n\n this.styles = compId ? shimStylesContent(compId, styles) : styles;\n this.styleUrls = component.getExternalStyles?.(compId);\n }\n\n applyStyles(): void {\n this.sharedStylesHost.addStyles(this.styles, this.styleUrls);\n }\n\n override destroy(): void {\n if (!this.removeStylesOnCompDestroy) {\n return;\n }\n\n // In the case that animate.leave animations are used, depending on\n // app structure, a race condition happens with the destroy call and\n // the animation being added to the element. Either the DOM node is\n // immediately removed or the animate instruction is called right\n // as the styles are pruned, causing the animated element to sit\n // until the timeout removes it. This delays the pruning of style\n // sheets for a few seconds to avoid this problem.\n //\n // TODO(thePunderWoman): replace this with a more targeted delay on only\n // cases where we know there's a leave animation, that the leave animation\n // is actually running, and to instead use the longest animation value\n // for the timeout duration.\n if (\n (typeof ngServerMode === 'undefined' || !ngServerMode) &&\n !this._animationDisabled &&\n this.registry.elements\n ) {\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.sharedStylesHost.removeStyles(this.styles, this.styleUrls);\n }, this.maxAnimationTimeout);\n });\n return;\n }\n this.sharedStylesHost.removeStyles(this.styles, this.styleUrls);\n }\n}\n\nclass EmulatedEncapsulationDomRenderer2 extends NoneEncapsulationDomRenderer {\n private contentAttr: string;\n private hostAttr: string;\n\n constructor(\n eventManager: EventManager,\n sharedStylesHost: SharedStylesHost,\n component: RendererType2,\n appId: string,\n removeStylesOnCompDestroy: boolean,\n doc: Document,\n ngZone: NgZone,\n platformIsServer: boolean,\n tracingService: TracingService<TracingSnapshot> | null,\n registry: AnimationRemovalRegistry,\n animationDisabled: boolean,\n maxAnimationTimeout: number,\n ) {\n const compId = appId + '-' + component.id;\n super(\n eventManager,\n sharedStylesHost,\n component,\n removeStylesOnCompDestroy,\n doc,\n ngZone,\n platformIsServer,\n tracingService,\n registry,\n animationDisabled,\n maxAnimationTimeout,\n compId,\n );\n this.contentAttr = shimContentAttribute(compId);\n this.hostAttr = shimHostAttribute(compId);\n }\n\n applyToHost(element: any): void {\n this.applyStyles();\n this.setAttribute(element, this.hostAttr, '');\n }\n\n override createElement(parent: any, name: string): Element {\n const el = super.createElement(parent, name);\n super.setAttribute(el, this.contentAttr, '');\n return el;\n }\n}\n"],"names":["RuntimeError","getAnimationElementRemovalRegistry","i1.EventManager","i2.SharedStylesHost","ANIMATIONS_DISABLED","TracingService","getDOM"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"dom_renderer.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/dom/events/event_manager.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/dom/shared_styles_host.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/dom/dom_renderer.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Inject,\n Injectable,\n InjectionToken,\n NgZone,\n ɵRuntimeError as RuntimeError,\n type ListenerOptions,\n} from '@angular/core';\n\nimport {RuntimeErrorCode} from '../../errors';\n\n/**\n * The injection token for plugins of the `EventManager` service.\n *\n * @publicApi\n */\nexport const EVENT_MANAGER_PLUGINS = new InjectionToken<EventManagerPlugin[]>(\n ngDevMode ? 'EventManagerPlugins' : '',\n);\n\n/**\n * An injectable service that provides event management for Angular\n * through a browser plug-in.\n *\n * @publicApi\n */\n@Injectable()\nexport class EventManager {\n private _plugins: EventManagerPlugin[];\n private _eventNameToPlugin = new Map<string, EventManagerPlugin>();\n\n /**\n * Initializes an instance of the event-manager service.\n */\n constructor(\n @Inject(EVENT_MANAGER_PLUGINS) plugins: EventManagerPlugin[],\n private _zone: NgZone,\n ) {\n plugins.forEach((plugin) => {\n plugin.manager = this;\n });\n this._plugins = plugins.slice().reverse();\n }\n\n /**\n * Registers a handler for a specific element and event.\n *\n * @param element The HTML element to receive event notifications.\n * @param eventName The name of the event to listen for.\n * @param handler A function to call when the notification occurs. Receives the\n * event object as an argument.\n * @param options Options that configure how the event listener is bound.\n * @returns A callback function that can be used to remove the handler.\n */\n addEventListener(\n element: HTMLElement,\n eventName: string,\n handler: Function,\n options?: ListenerOptions,\n ): Function {\n const plugin = this._findPluginFor(eventName);\n return plugin.addEventListener(element, eventName, handler, options);\n }\n\n /**\n * Retrieves the compilation zone in which event listeners are registered.\n */\n getZone(): NgZone {\n return this._zone;\n }\n\n /** @internal */\n _findPluginFor(eventName: string): EventManagerPlugin {\n let plugin = this._eventNameToPlugin.get(eventName);\n if (plugin) {\n return plugin;\n }\n\n const plugins = this._plugins;\n plugin = plugins.find((plugin) => plugin.supports(eventName));\n if (!plugin) {\n throw new RuntimeError(\n RuntimeErrorCode.NO_PLUGIN_FOR_EVENT,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `No event manager plugin found for event ${eventName}`,\n );\n }\n\n this._eventNameToPlugin.set(eventName, plugin);\n return plugin;\n }\n}\n\n/**\n * The plugin definition for the `EventManager` class\n *\n * It can be used as a base class to create custom manager plugins, i.e. you can create your own\n * class that extends the `EventManagerPlugin` one.\n *\n * @publicApi\n */\nexport abstract class EventManagerPlugin {\n // TODO: remove (has some usage in G3)\n constructor(private _doc: any) {}\n\n // Using non-null assertion because it's set by EventManager's constructor\n manager!: EventManager;\n\n /**\n * Should return `true` for every event name that should be supported by this plugin\n */\n abstract supports(eventName: string): boolean;\n\n /**\n * Implement the behaviour for the supported events\n */\n abstract addEventListener(\n element: HTMLElement,\n eventName: string,\n handler: Function,\n options?: ListenerOptions,\n ): Function;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {DOCUMENT} from '@angular/common';\nimport {\n APP_ID,\n CSP_NONCE,\n Inject,\n Injectable,\n OnDestroy,\n Optional,\n PLATFORM_ID,\n} from '@angular/core';\n\n/** The style elements attribute name used to set value of `APP_ID` token. */\nconst APP_ID_ATTRIBUTE_NAME = 'ng-app-id';\n\n/**\n * A record of usage for a specific style including all elements added to the DOM\n * that contain a given style.\n */\ninterface UsageRecord<T> {\n elements: T[];\n usage: number;\n}\n\n/**\n * Removes all provided elements from the document.\n * @param elements An array of HTML Elements.\n */\nfunction removeElements(elements: Iterable<HTMLElement>): void {\n for (const element of elements) {\n element.remove();\n }\n}\n\n/**\n * Creates a `style` element with the provided inline style content.\n * @param style A string of the inline style content.\n * @param doc A DOM Document to use to create the element.\n * @returns An HTMLStyleElement instance.\n */\nfunction createStyleElement(style: string, doc: Document): HTMLStyleElement {\n const styleElement = doc.createElement('style');\n styleElement.textContent = style;\n\n return styleElement;\n}\n\n/**\n * Searches a DOM document's head element for style elements with a matching application\n * identifier attribute (`ng-app-id`) to the provide identifier and adds usage records for each.\n * @param doc An HTML DOM document instance.\n * @param appId A string containing an Angular application identifer.\n * @param inline A Map object for tracking inline (defined via `styles` in component decorator) style usage.\n * @param external A Map object for tracking external (defined via `styleUrls` in component decorator) style usage.\n */\nfunction addServerStyles(\n doc: Document,\n appId: string,\n inline: Map<string, UsageRecord<HTMLStyleElement>>,\n external: Map<string, UsageRecord<HTMLLinkElement>>,\n): void {\n const elements = doc.head?.querySelectorAll<HTMLStyleElement | HTMLLinkElement>(\n `style[${APP_ID_ATTRIBUTE_NAME}=\"${appId}\"],link[${APP_ID_ATTRIBUTE_NAME}=\"${appId}\"]`,\n );\n\n if (elements) {\n for (const styleElement of elements) {\n styleElement.removeAttribute(APP_ID_ATTRIBUTE_NAME);\n if (styleElement instanceof HTMLLinkElement) {\n // Only use filename from href\n // The href is build time generated with a unique value to prevent duplicates.\n external.set(styleElement.href.slice(styleElement.href.lastIndexOf('/') + 1), {\n usage: 0,\n elements: [styleElement],\n });\n } else if (styleElement.textContent) {\n inline.set(styleElement.textContent, {usage: 0, elements: [styleElement]});\n }\n }\n }\n}\n\n/**\n * Creates a `link` element for the provided external style URL.\n * @param url A string of the URL for the stylesheet.\n * @param doc A DOM Document to use to create the element.\n * @returns An HTMLLinkElement instance.\n */\nexport function createLinkElement(url: string, doc: Document): HTMLLinkElement {\n const linkElement = doc.createElement('link');\n linkElement.setAttribute('rel', 'stylesheet');\n linkElement.setAttribute('href', url);\n\n return linkElement;\n}\n\n@Injectable()\nexport class SharedStylesHost implements OnDestroy {\n /**\n * Provides usage information for active inline style content and associated HTML <style> elements.\n * Embedded styles typically originate from the `styles` metadata of a rendered component.\n */\n private readonly inline = new Map<string /** content */, UsageRecord<HTMLStyleElement>>();\n\n /**\n * Provides usage information for active external style URLs and the associated HTML <link> elements.\n * External styles typically originate from the `ɵɵExternalStylesFeature` of a rendered component.\n */\n private readonly external = new Map<string /** URL */, UsageRecord<HTMLLinkElement>>();\n\n /**\n * Set of host DOM nodes that will have styles attached.\n */\n private readonly hosts = new Set<Node>();\n\n constructor(\n @Inject(DOCUMENT) private readonly doc: Document,\n @Inject(APP_ID) private readonly appId: string,\n @Inject(CSP_NONCE) @Optional() private readonly nonce?: string | null,\n // Cannot remove it due to backward compatibility\n // (it seems some TGP targets might be calling this constructor directly).\n @Inject(PLATFORM_ID) platformId: object = {},\n ) {\n addServerStyles(doc, appId, this.inline, this.external);\n this.hosts.add(doc.head);\n }\n\n /**\n * Adds embedded styles to the DOM via HTML `style` elements.\n * @param styles An array of style content strings.\n */\n addStyles(styles: string[], urls?: string[]): void {\n for (const value of styles) {\n this.addUsage(value, this.inline, createStyleElement);\n }\n\n urls?.forEach((value) => this.addUsage(value, this.external, createLinkElement));\n }\n\n /**\n * Removes embedded styles from the DOM that were added as HTML `style` elements.\n * @param styles An array of style content strings.\n */\n removeStyles(styles: string[], urls?: string[]): void {\n for (const value of styles) {\n this.removeUsage(value, this.inline);\n }\n\n urls?.forEach((value) => this.removeUsage(value, this.external));\n }\n\n protected addUsage<T extends HTMLElement>(\n value: string,\n usages: Map<string, UsageRecord<T>>,\n creator: (value: string, doc: Document) => T,\n ): void {\n // Attempt to get any current usage of the value\n const record = usages.get(value);\n\n // If existing, just increment the usage count\n if (record) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && record.usage === 0) {\n // A usage count of zero indicates a preexisting server generated style.\n // This attribute is solely used for debugging purposes of SSR style reuse.\n record.elements.forEach((element) => element.setAttribute('ng-style-reused', ''));\n }\n record.usage++;\n } else {\n // Otherwise, create an entry to track the elements and add element for each host\n usages.set(value, {\n usage: 1,\n elements: [...this.hosts].map((host) => this.addElement(host, creator(value, this.doc))),\n });\n }\n }\n\n protected removeUsage<T extends HTMLElement>(\n value: string,\n usages: Map<string, UsageRecord<T>>,\n ): void {\n // Attempt to get any current usage of the value\n const record = usages.get(value);\n\n // If there is a record, reduce the usage count and if no longer used,\n // remove from DOM and delete usage record.\n if (record) {\n record.usage--;\n if (record.usage <= 0) {\n removeElements(record.elements);\n usages.delete(value);\n }\n }\n }\n\n ngOnDestroy(): void {\n for (const [, {elements}] of [...this.inline, ...this.external]) {\n removeElements(elements);\n }\n this.hosts.clear();\n }\n\n /**\n * Adds a host node to the set of style hosts and adds all existing style usage to\n * the newly added host node.\n *\n * This is currently only used for Shadow DOM encapsulation mode.\n */\n addHost(hostNode: Node): void {\n this.hosts.add(hostNode);\n\n // Add existing styles to new host\n for (const [style, {elements}] of this.inline) {\n elements.push(this.addElement(hostNode, createStyleElement(style, this.doc)));\n }\n for (const [url, {elements}] of this.external) {\n elements.push(this.addElement(hostNode, createLinkElement(url, this.doc)));\n }\n }\n\n removeHost(hostNode: Node): void {\n this.hosts.delete(hostNode);\n }\n\n private addElement<T extends HTMLElement>(host: Node, element: T): T {\n // Add a nonce if present\n if (this.nonce) {\n element.setAttribute('nonce', this.nonce);\n }\n\n // Add application identifier when on the server to support client-side reuse\n if (typeof ngServerMode !== 'undefined' && ngServerMode) {\n element.setAttribute(APP_ID_ATTRIBUTE_NAME, this.appId);\n }\n\n // Insert the element into the DOM with the host node as parent\n return host.appendChild(element);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {DOCUMENT, ɵgetDOM as getDOM} from '@angular/common';\nimport {\n APP_ID,\n CSP_NONCE,\n Inject,\n Injectable,\n InjectionToken,\n NgZone,\n OnDestroy,\n PLATFORM_ID,\n Renderer2,\n RendererFactory2,\n RendererStyleFlags2,\n RendererType2,\n ViewEncapsulation,\n ɵRuntimeError as RuntimeError,\n type ListenerOptions,\n ɵTracingService as TracingService,\n ɵTracingSnapshot as TracingSnapshot,\n Optional,\n ɵAnimationRemovalRegistry as AnimationRemovalRegistry,\n ɵgetAnimationElementRemovalRegistry as getAnimationElementRemovalRegistry,\n ɵANIMATIONS_DISABLED as ANIMATIONS_DISABLED,\n MAX_ANIMATION_TIMEOUT,\n} from '@angular/core';\n\nimport {RuntimeErrorCode} from '../errors';\n\nimport {EventManager} from './events/event_manager';\nimport {createLinkElement, SharedStylesHost} from './shared_styles_host';\n\nexport const NAMESPACE_URIS: {[ns: string]: string} = {\n 'svg': 'http://www.w3.org/2000/svg',\n 'xhtml': 'http://www.w3.org/1999/xhtml',\n 'xlink': 'http://www.w3.org/1999/xlink',\n 'xml': 'http://www.w3.org/XML/1998/namespace',\n 'xmlns': 'http://www.w3.org/2000/xmlns/',\n 'math': 'http://www.w3.org/1998/Math/MathML',\n};\n\nconst COMPONENT_REGEX = /%COMP%/g;\nconst SOURCEMAP_URL_REGEXP = /\\/\\*#\\s*sourceMappingURL=(.+?)\\s*\\*\\//;\nconst PROTOCOL_REGEXP = /^https?:/;\n\nexport const COMPONENT_VARIABLE = '%COMP%';\nexport const HOST_ATTR = `_nghost-${COMPONENT_VARIABLE}`;\nexport const CONTENT_ATTR = `_ngcontent-${COMPONENT_VARIABLE}`;\n\n/**\n * The default value for the `REMOVE_STYLES_ON_COMPONENT_DESTROY` DI token.\n */\nconst REMOVE_STYLES_ON_COMPONENT_DESTROY_DEFAULT = true;\n\n/**\n * A DI token that indicates whether styles\n * of destroyed components should be removed from DOM.\n *\n * By default, the value is set to `true`.\n * @publicApi\n */\nexport const REMOVE_STYLES_ON_COMPONENT_DESTROY = new InjectionToken<boolean>(\n ngDevMode ? 'RemoveStylesOnCompDestroy' : '',\n {\n providedIn: 'root',\n factory: () => REMOVE_STYLES_ON_COMPONENT_DESTROY_DEFAULT,\n },\n);\n\nexport function shimContentAttribute(componentShortId: string): string {\n return CONTENT_ATTR.replace(COMPONENT_REGEX, componentShortId);\n}\n\nexport function shimHostAttribute(componentShortId: string): string {\n return HOST_ATTR.replace(COMPONENT_REGEX, componentShortId);\n}\n\nexport function shimStylesContent(compId: string, styles: string[]): string[] {\n return styles.map((s) => s.replace(COMPONENT_REGEX, compId));\n}\n\n/**\n * Prepends a baseHref to the `sourceMappingURL` within the provided CSS content.\n * If the `sourceMappingURL` contains an inline (encoded) map, the function skips processing.\n *\n * @note For inline stylesheets, the `sourceMappingURL` is relative to the page's origin\n * and not the provided baseHref. This function is needed as when accessing the page with a URL\n * containing two or more segments.\n * For example, if the baseHref is set to `/`, and you visit a URL like `http://localhost/foo/bar`,\n * the map would be requested from `http://localhost/foo/bar/comp.css.map` instead of what you'd expect,\n * which is `http://localhost/comp.css.map`. This behavior is corrected by modifying the `sourceMappingURL`\n * to ensure external source maps are loaded relative to the baseHref.\n *\n\n * @param baseHref - The base URL to prepend to the `sourceMappingURL`.\n * @param styles - An array of CSS content strings, each potentially containing a `sourceMappingURL`.\n * @returns The updated array of CSS content strings with modified `sourceMappingURL` values,\n * or the original content if no modification is needed.\n */\nexport function addBaseHrefToCssSourceMap(baseHref: string, styles: string[]): string[] {\n if (!baseHref) {\n return styles;\n }\n\n const absoluteBaseHrefUrl = new URL(baseHref, 'http://localhost');\n\n return styles.map((cssContent) => {\n if (!cssContent.includes('sourceMappingURL=')) {\n return cssContent;\n }\n\n return cssContent.replace(SOURCEMAP_URL_REGEXP, (_, sourceMapUrl) => {\n if (\n sourceMapUrl[0] === '/' ||\n sourceMapUrl.startsWith('data:') ||\n PROTOCOL_REGEXP.test(sourceMapUrl)\n ) {\n return `/*# sourceMappingURL=${sourceMapUrl} */`;\n }\n\n const {pathname: resolvedSourceMapUrl} = new URL(sourceMapUrl, absoluteBaseHrefUrl);\n\n return `/*# sourceMappingURL=${resolvedSourceMapUrl} */`;\n });\n });\n}\n\n@Injectable()\nexport class DomRendererFactory2 implements RendererFactory2, OnDestroy {\n private readonly rendererByCompId = new Map<\n string,\n EmulatedEncapsulationDomRenderer2 | NoneEncapsulationDomRenderer\n >();\n private readonly defaultRenderer: Renderer2;\n private readonly platformIsServer: boolean;\n private registry: AnimationRemovalRegistry;\n\n constructor(\n private readonly eventManager: EventManager,\n private readonly sharedStylesHost: SharedStylesHost,\n @Inject(APP_ID) private readonly appId: string,\n @Inject(REMOVE_STYLES_ON_COMPONENT_DESTROY) private removeStylesOnCompDestroy: boolean,\n @Inject(DOCUMENT) private readonly doc: Document,\n @Inject(PLATFORM_ID) readonly platformId: Object,\n readonly ngZone: NgZone,\n @Inject(CSP_NONCE) private readonly nonce: string | null = null,\n @Inject(ANIMATIONS_DISABLED) private readonly animationDisabled: boolean,\n @Inject(MAX_ANIMATION_TIMEOUT) private readonly maxAnimationTimeout: number,\n @Inject(TracingService)\n @Optional()\n private readonly tracingService: TracingService<TracingSnapshot> | null = null,\n ) {\n this.platformIsServer = typeof ngServerMode !== 'undefined' && ngServerMode;\n this.defaultRenderer = new DefaultDomRenderer2(\n eventManager,\n doc,\n ngZone,\n this.platformIsServer,\n this.tracingService,\n (this.registry = getAnimationElementRemovalRegistry()),\n this.maxAnimationTimeout,\n );\n }\n\n createRenderer(element: any, type: RendererType2 | null): Renderer2 {\n if (!element || !type) {\n return this.defaultRenderer;\n }\n\n if (\n typeof ngServerMode !== 'undefined' &&\n ngServerMode &&\n type.encapsulation === ViewEncapsulation.ShadowDom\n ) {\n // Domino does not support shadow DOM.\n type = {...type, encapsulation: ViewEncapsulation.Emulated};\n }\n\n const renderer = this.getOrCreateRenderer(element, type);\n // Renderers have different logic due to different encapsulation behaviours.\n // Ex: for emulated, an attribute is added to the element.\n if (renderer instanceof EmulatedEncapsulationDomRenderer2) {\n renderer.applyToHost(element);\n } else if (renderer instanceof NoneEncapsulationDomRenderer) {\n renderer.applyStyles();\n }\n\n return renderer;\n }\n\n private getOrCreateRenderer(element: any, type: RendererType2): Renderer2 {\n const rendererByCompId = this.rendererByCompId;\n let renderer = rendererByCompId.get(type.id);\n\n if (!renderer) {\n const doc = this.doc;\n const ngZone = this.ngZone;\n const eventManager = this.eventManager;\n const sharedStylesHost = this.sharedStylesHost;\n const removeStylesOnCompDestroy = this.removeStylesOnCompDestroy;\n const platformIsServer = this.platformIsServer;\n const tracingService = this.tracingService;\n\n switch (type.encapsulation) {\n case ViewEncapsulation.Emulated:\n renderer = new EmulatedEncapsulationDomRenderer2(\n eventManager,\n sharedStylesHost,\n type,\n this.appId,\n removeStylesOnCompDestroy,\n doc,\n ngZone,\n platformIsServer,\n tracingService,\n this.registry,\n this.animationDisabled,\n this.maxAnimationTimeout,\n );\n break;\n case ViewEncapsulation.ShadowDom:\n return new ShadowDomRenderer(\n eventManager,\n sharedStylesHost,\n element,\n type,\n doc,\n ngZone,\n this.nonce,\n platformIsServer,\n tracingService,\n this.registry,\n this.maxAnimationTimeout,\n );\n default:\n renderer = new NoneEncapsulationDomRenderer(\n eventManager,\n sharedStylesHost,\n type,\n removeStylesOnCompDestroy,\n doc,\n ngZone,\n platformIsServer,\n tracingService,\n this.registry,\n this.animationDisabled,\n this.maxAnimationTimeout,\n );\n break;\n }\n\n rendererByCompId.set(type.id, renderer);\n }\n\n return renderer;\n }\n\n ngOnDestroy() {\n this.rendererByCompId.clear();\n }\n\n /**\n * Used during HMR to clear any cached data about a component.\n * @param componentId ID of the component that is being replaced.\n */\n protected componentReplaced(componentId: string) {\n this.rendererByCompId.delete(componentId);\n }\n}\n\nclass DefaultDomRenderer2 implements Renderer2 {\n data: {[key: string]: any} = Object.create(null);\n\n /**\n * By default this renderer throws when encountering synthetic properties\n * This can be disabled for example by the AsyncAnimationRendererFactory\n */\n throwOnSyntheticProps = true;\n\n constructor(\n private readonly eventManager: EventManager,\n private readonly doc: Document,\n protected readonly ngZone: NgZone,\n private readonly platformIsServer: boolean,\n private readonly tracingService: TracingService<TracingSnapshot> | null,\n protected readonly registry: AnimationRemovalRegistry,\n protected readonly maxAnimationTimeout: number,\n ) {}\n\n destroy(): void {}\n\n destroyNode = null;\n\n createElement(name: string, namespace?: string): any {\n if (namespace) {\n // TODO: `|| namespace` was added in\n // https://github.com/angular/angular/commit/2b9cc8503d48173492c29f5a271b61126104fbdb to\n // support how Ivy passed around the namespace URI rather than short name at the time. It did\n // not, however extend the support to other parts of the system (setAttribute, setAttribute,\n // and the ServerRenderer). We should decide what exactly the semantics for dealing with\n // namespaces should be and make it consistent.\n // Related issues:\n // https://github.com/angular/angular/issues/44028\n // https://github.com/angular/angular/issues/44883\n return this.doc.createElementNS(NAMESPACE_URIS[namespace] || namespace, name);\n }\n\n return this.doc.createElement(name);\n }\n\n createComment(value: string): any {\n return this.doc.createComment(value);\n }\n\n createText(value: string): any {\n return this.doc.createTextNode(value);\n }\n\n appendChild(parent: any, newChild: any): void {\n const targetParent = isTemplateNode(parent) ? parent.content : parent;\n targetParent.appendChild(newChild);\n }\n\n insertBefore(parent: any, newChild: any, refChild: any): void {\n if (parent) {\n const targetParent = isTemplateNode(parent) ? parent.content : parent;\n targetParent.insertBefore(newChild, refChild);\n }\n }\n\n removeChild(_parent: any, oldChild: any): void {\n const {elements} = this.registry;\n if (elements) {\n elements.animate(oldChild, () => oldChild.remove(), this.maxAnimationTimeout);\n return;\n }\n // child was removed\n oldChild.remove();\n }\n\n selectRootElement(selectorOrNode: string | any, preserveContent?: boolean): any {\n let el: any =\n typeof selectorOrNode === 'string' ? this.doc.querySelector(selectorOrNode) : selectorOrNode;\n if (!el) {\n throw new RuntimeError(\n RuntimeErrorCode.ROOT_NODE_NOT_FOUND,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `The selector \"${selectorOrNode}\" did not match any elements`,\n );\n }\n if (!preserveContent) {\n el.textContent = '';\n }\n return el;\n }\n\n parentNode(node: any): any {\n return node.parentNode;\n }\n\n nextSibling(node: any): any {\n return node.nextSibling;\n }\n\n setAttribute(el: any, name: string, value: string, namespace?: string): void {\n if (namespace) {\n name = namespace + ':' + name;\n const namespaceUri = NAMESPACE_URIS[namespace];\n if (namespaceUri) {\n el.setAttributeNS(namespaceUri, name, value);\n } else {\n el.setAttribute(name, value);\n }\n } else {\n el.setAttribute(name, value);\n }\n }\n\n removeAttribute(el: any, name: string, namespace?: string): void {\n if (namespace) {\n const namespaceUri = NAMESPACE_URIS[namespace];\n if (namespaceUri) {\n el.removeAttributeNS(namespaceUri, name);\n } else {\n el.removeAttribute(`${namespace}:${name}`);\n }\n } else {\n el.removeAttribute(name);\n }\n }\n\n addClass(el: any, name: string): void {\n el.classList.add(name);\n }\n\n removeClass(el: any, name: string): void {\n el.classList.remove(name);\n }\n\n setStyle(el: any, style: string, value: any, flags: RendererStyleFlags2): void {\n if (flags & (RendererStyleFlags2.DashCase | RendererStyleFlags2.Important)) {\n el.style.setProperty(style, value, flags & RendererStyleFlags2.Important ? 'important' : '');\n } else {\n el.style[style] = value;\n }\n }\n\n removeStyle(el: any, style: string, flags: RendererStyleFlags2): void {\n if (flags & RendererStyleFlags2.DashCase) {\n // removeProperty has no effect when used on camelCased properties.\n el.style.removeProperty(style);\n } else {\n el.style[style] = '';\n }\n }\n\n setProperty(el: any, name: string, value: any): void {\n if (el == null) {\n return;\n }\n\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n this.throwOnSyntheticProps &&\n checkNoSyntheticProp(name, 'property');\n el[name] = value;\n }\n\n setValue(node: any, value: string): void {\n node.nodeValue = value;\n }\n\n listen(\n target: 'window' | 'document' | 'body' | any,\n event: string,\n callback: (event: any) => boolean,\n options?: ListenerOptions,\n ): () => void {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n this.throwOnSyntheticProps &&\n checkNoSyntheticProp(event, 'listener');\n if (typeof target === 'string') {\n target = getDOM().getGlobalEventTarget(this.doc, target);\n if (!target) {\n throw new RuntimeError(\n RuntimeErrorCode.UNSUPPORTED_EVENT_TARGET,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `Unsupported event target ${target} for event ${event}`,\n );\n }\n }\n\n let wrappedCallback = this.decoratePreventDefault(callback);\n\n if (this.tracingService?.wrapEventListener) {\n wrappedCallback = this.tracingService.wrapEventListener(target, event, wrappedCallback);\n }\n\n return this.eventManager.addEventListener(\n target,\n event,\n wrappedCallback,\n options,\n ) as VoidFunction;\n }\n\n private decoratePreventDefault(eventHandler: Function): Function {\n // `DebugNode.triggerEventHandler` needs to know if the listener was created with\n // decoratePreventDefault or is a listener added outside the Angular context so it can handle\n // the two differently. In the first case, the special '__ngUnwrap__' token is passed to the\n // unwrap the listener (see below).\n return (event: any) => {\n // Ivy uses '__ngUnwrap__' as a special token that allows us to unwrap the function\n // so that it can be invoked programmatically by `DebugNode.triggerEventHandler`. The\n // debug_node can inspect the listener toString contents for the existence of this special\n // token. Because the token is a string literal, it is ensured to not be modified by compiled\n // code.\n if (event === '__ngUnwrap__') {\n return eventHandler;\n }\n\n // Run the event handler inside the ngZone because event handlers are not patched\n // by Zone on the server. This is required only for tests.\n const allowDefaultBehavior =\n typeof ngServerMode !== 'undefined' && ngServerMode\n ? this.ngZone.runGuarded(() => eventHandler(event))\n : eventHandler(event);\n if (allowDefaultBehavior === false) {\n event.preventDefault();\n }\n\n return undefined;\n };\n }\n}\n\nconst AT_CHARCODE = (() => '@'.charCodeAt(0))();\nfunction checkNoSyntheticProp(name: string, nameKind: string) {\n if (name.charCodeAt(0) === AT_CHARCODE) {\n throw new RuntimeError(\n RuntimeErrorCode.UNEXPECTED_SYNTHETIC_PROPERTY,\n `Unexpected synthetic ${nameKind} ${name} found. Please make sure that:\n - Make sure \\`provideAnimationsAsync()\\`, \\`provideAnimations()\\` or \\`provideNoopAnimations()\\` call was added to a list of providers used to bootstrap an application.\n - There is a corresponding animation configuration named \\`${name}\\` defined in the \\`animations\\` field of the \\`@Component\\` decorator (see https://angular.dev/api/core/Component#animations).`,\n );\n }\n}\n\nfunction isTemplateNode(node: any): node is HTMLTemplateElement {\n return node.tagName === 'TEMPLATE' && node.content !== undefined;\n}\n\nclass ShadowDomRenderer extends DefaultDomRenderer2 {\n private shadowRoot: any;\n\n constructor(\n eventManager: EventManager,\n private sharedStylesHost: SharedStylesHost,\n private hostEl: any,\n component: RendererType2,\n doc: Document,\n ngZone: NgZone,\n nonce: string | null,\n platformIsServer: boolean,\n tracingService: TracingService<TracingSnapshot> | null,\n registry: AnimationRemovalRegistry,\n maxAnimationTimeout: number,\n ) {\n super(\n eventManager,\n doc,\n ngZone,\n platformIsServer,\n tracingService,\n registry,\n maxAnimationTimeout,\n );\n this.shadowRoot = (hostEl as any).attachShadow({mode: 'open'});\n this.sharedStylesHost.addHost(this.shadowRoot);\n let styles = component.styles;\n if (ngDevMode) {\n // We only do this in development, as for production users should not add CSS sourcemaps to components.\n const baseHref = getDOM().getBaseHref(doc) ?? '';\n styles = addBaseHrefToCssSourceMap(baseHref, styles);\n }\n\n styles = shimStylesContent(component.id, styles);\n\n for (const style of styles) {\n const styleEl = document.createElement('style');\n\n if (nonce) {\n styleEl.setAttribute('nonce', nonce);\n }\n\n styleEl.textContent = style;\n this.shadowRoot.appendChild(styleEl);\n }\n\n // Apply any external component styles to the shadow root for the component's element.\n // The ShadowDOM renderer uses an alternative execution path for component styles that\n // does not use the SharedStylesHost that other encapsulation modes leverage. Much like\n // the manual addition of embedded styles directly above, any external stylesheets\n // must be manually added here to ensure ShadowDOM components are correctly styled.\n // TODO: Consider reworking the DOM Renderers to consolidate style handling.\n const styleUrls = component.getExternalStyles?.();\n if (styleUrls) {\n for (const styleUrl of styleUrls) {\n const linkEl = createLinkElement(styleUrl, doc);\n if (nonce) {\n linkEl.setAttribute('nonce', nonce);\n }\n this.shadowRoot.appendChild(linkEl);\n }\n }\n }\n\n private nodeOrShadowRoot(node: any): any {\n return node === this.hostEl ? this.shadowRoot : node;\n }\n\n override appendChild(parent: any, newChild: any): void {\n return super.appendChild(this.nodeOrShadowRoot(parent), newChild);\n }\n override insertBefore(parent: any, newChild: any, refChild: any): void {\n return super.insertBefore(this.nodeOrShadowRoot(parent), newChild, refChild);\n }\n override removeChild(_parent: any, oldChild: any): void {\n return super.removeChild(null, oldChild);\n }\n override parentNode(node: any): any {\n return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(node)));\n }\n\n override destroy() {\n this.sharedStylesHost.removeHost(this.shadowRoot);\n }\n}\n\nclass NoneEncapsulationDomRenderer extends DefaultDomRenderer2 {\n private readonly styles: string[];\n private readonly styleUrls?: string[];\n private readonly _animationDisabled: boolean;\n\n constructor(\n eventManager: EventManager,\n private readonly sharedStylesHost: SharedStylesHost,\n component: RendererType2,\n private removeStylesOnCompDestroy: boolean,\n doc: Document,\n ngZone: NgZone,\n platformIsServer: boolean,\n tracingService: TracingService<TracingSnapshot> | null,\n registry: AnimationRemovalRegistry,\n animationDisabled: boolean,\n maxAnimationTimeout: number,\n compId?: string,\n ) {\n super(\n eventManager,\n doc,\n ngZone,\n platformIsServer,\n tracingService,\n registry,\n maxAnimationTimeout,\n );\n this._animationDisabled = animationDisabled;\n let styles = component.styles;\n if (ngDevMode) {\n // We only do this in development, as for production users should not add CSS sourcemaps to components.\n const baseHref = getDOM().getBaseHref(doc) ?? '';\n styles = addBaseHrefToCssSourceMap(baseHref, styles);\n }\n\n this.styles = compId ? shimStylesContent(compId, styles) : styles;\n this.styleUrls = component.getExternalStyles?.(compId);\n }\n\n applyStyles(): void {\n this.sharedStylesHost.addStyles(this.styles, this.styleUrls);\n }\n\n override destroy(): void {\n if (!this.removeStylesOnCompDestroy) {\n return;\n }\n\n // In the case that animate.leave animations are used, depending on\n // app structure, a race condition happens with the destroy call and\n // the animation being added to the element. Either the DOM node is\n // immediately removed or the animate instruction is called right\n // as the styles are pruned, causing the animated element to sit\n // until the timeout removes it. This delays the pruning of style\n // sheets for a few seconds to avoid this problem.\n //\n // TODO(thePunderWoman): replace this with a more targeted delay on only\n // cases where we know there's a leave animation, that the leave animation\n // is actually running, and to instead use the longest animation value\n // for the timeout duration.\n if (\n (typeof ngServerMode === 'undefined' || !ngServerMode) &&\n !this._animationDisabled &&\n this.registry.elements\n ) {\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.sharedStylesHost.removeStyles(this.styles, this.styleUrls);\n }, this.maxAnimationTimeout);\n });\n return;\n }\n this.sharedStylesHost.removeStyles(this.styles, this.styleUrls);\n }\n}\n\nclass EmulatedEncapsulationDomRenderer2 extends NoneEncapsulationDomRenderer {\n private contentAttr: string;\n private hostAttr: string;\n\n constructor(\n eventManager: EventManager,\n sharedStylesHost: SharedStylesHost,\n component: RendererType2,\n appId: string,\n removeStylesOnCompDestroy: boolean,\n doc: Document,\n ngZone: NgZone,\n platformIsServer: boolean,\n tracingService: TracingService<TracingSnapshot> | null,\n registry: AnimationRemovalRegistry,\n animationDisabled: boolean,\n maxAnimationTimeout: number,\n ) {\n const compId = appId + '-' + component.id;\n super(\n eventManager,\n sharedStylesHost,\n component,\n removeStylesOnCompDestroy,\n doc,\n ngZone,\n platformIsServer,\n tracingService,\n registry,\n animationDisabled,\n maxAnimationTimeout,\n compId,\n );\n this.contentAttr = shimContentAttribute(compId);\n this.hostAttr = shimHostAttribute(compId);\n }\n\n applyToHost(element: any): void {\n this.applyStyles();\n this.setAttribute(element, this.hostAttr, '');\n }\n\n override createElement(parent: any, name: string): Element {\n const el = super.createElement(parent, name);\n super.setAttribute(el, this.contentAttr, '');\n return el;\n }\n}\n"],"names":["RuntimeError","getAnimationElementRemovalRegistry","i1.EventManager","i2.SharedStylesHost","ANIMATIONS_DISABLED","TracingService","getDOM"],"mappings":";;;;;;;;;;AAmBA;;;;AAIG;AACU,MAAA,qBAAqB,GAAG,IAAI,cAAc,CACrD,SAAS,GAAG,qBAAqB,GAAG,EAAE;AAGxC;;;;;AAKG;MAEU,YAAY,CAAA;AASb,IAAA,KAAA;AARF,IAAA,QAAQ;AACR,IAAA,kBAAkB,GAAG,IAAI,GAAG,EAA8B;AAElE;;AAEG;IACH,WACiC,CAAA,OAA6B,EACpD,KAAa,EAAA;QAAb,IAAK,CAAA,KAAA,GAAL,KAAK;AAEb,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACzB,YAAA,MAAM,CAAC,OAAO,GAAG,IAAI;AACvB,SAAC,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE;;AAG3C;;;;;;;;;AASG;AACH,IAAA,gBAAgB,CACd,OAAoB,EACpB,SAAiB,EACjB,OAAiB,EACjB,OAAyB,EAAA;QAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;AAC7C,QAAA,OAAO,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC;;AAGtE;;AAEG;IACH,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,KAAK;;;AAInB,IAAA,cAAc,CAAC,SAAiB,EAAA;QAC9B,IAAI,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC;QACnD,IAAI,MAAM,EAAE;AACV,YAAA,OAAO,MAAM;;AAGf,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ;AAC7B,QAAA,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAIA,aAAY,CAAA,IAAA,6CAEpB,CAAC,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS;gBAC5C,CAA2C,wCAAA,EAAA,SAAS,CAAE,CAAA,CACzD;;QAGH,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC;AAC9C,QAAA,OAAO,MAAM;;AA9DJ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,kBAQb,qBAAqB,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;sHARpB,YAAY,EAAA,CAAA;;sGAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB;;0BASI,MAAM;2BAAC,qBAAqB;;AA0DjC;;;;;;;AAOG;MACmB,kBAAkB,CAAA;AAElB,IAAA,IAAA;;AAApB,IAAA,WAAA,CAAoB,IAAS,EAAA;QAAT,IAAI,CAAA,IAAA,GAAJ,IAAI;;;AAGxB,IAAA,OAAO;AAgBR;;AC/GD;AACA,MAAM,qBAAqB,GAAG,WAAW;AAWzC;;;AAGG;AACH,SAAS,cAAc,CAAC,QAA+B,EAAA;AACrD,IAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;QAC9B,OAAO,CAAC,MAAM,EAAE;;AAEpB;AAEA;;;;;AAKG;AACH,SAAS,kBAAkB,CAAC,KAAa,EAAE,GAAa,EAAA;IACtD,MAAM,YAAY,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC;AAC/C,IAAA,YAAY,CAAC,WAAW,GAAG,KAAK;AAEhC,IAAA,OAAO,YAAY;AACrB;AAEA;;;;;;;AAOG;AACH,SAAS,eAAe,CACtB,GAAa,EACb,KAAa,EACb,MAAkD,EAClD,QAAmD,EAAA;AAEnD,IAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,EAAE,gBAAgB,CACzC,CAAA,MAAA,EAAS,qBAAqB,CAAA,EAAA,EAAK,KAAK,CAAW,QAAA,EAAA,qBAAqB,KAAK,KAAK,CAAA,EAAA,CAAI,CACvF;IAED,IAAI,QAAQ,EAAE;AACZ,QAAA,KAAK,MAAM,YAAY,IAAI,QAAQ,EAAE;AACnC,YAAA,YAAY,CAAC,eAAe,CAAC,qBAAqB,CAAC;AACnD,YAAA,IAAI,YAAY,YAAY,eAAe,EAAE;;;gBAG3C,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;AAC5E,oBAAA,KAAK,EAAE,CAAC;oBACR,QAAQ,EAAE,CAAC,YAAY,CAAC;AACzB,iBAAA,CAAC;;AACG,iBAAA,IAAI,YAAY,CAAC,WAAW,EAAE;AACnC,gBAAA,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,EAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAC,CAAC;;;;AAIlF;AAEA;;;;;AAKG;AACa,SAAA,iBAAiB,CAAC,GAAW,EAAE,GAAa,EAAA;IAC1D,MAAM,WAAW,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC;AAC7C,IAAA,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC;AAC7C,IAAA,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC;AAErC,IAAA,OAAO,WAAW;AACpB;MAGa,gBAAgB,CAAA;AAmBU,IAAA,GAAA;AACF,IAAA,KAAA;AACe,IAAA,KAAA;AApBlD;;;AAGG;AACc,IAAA,MAAM,GAAG,IAAI,GAAG,EAAwD;AAEzF;;;AAGG;AACc,IAAA,QAAQ,GAAG,IAAI,GAAG,EAAmD;AAEtF;;AAEG;AACc,IAAA,KAAK,GAAG,IAAI,GAAG,EAAQ;AAExC,IAAA,WAAA,CACqC,GAAa,EACf,KAAa,EACE,KAAqB;;;AAGhD,IAAA,UAAA,GAAqB,EAAE,EAAA;QALT,IAAG,CAAA,GAAA,GAAH,GAAG;QACL,IAAK,CAAA,KAAA,GAAL,KAAK;QACU,IAAK,CAAA,KAAA,GAAL,KAAK;AAKrD,QAAA,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;QACvD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;;AAG1B;;;AAGG;IACH,SAAS,CAAC,MAAgB,EAAE,IAAe,EAAA;AACzC,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC;;QAGvD,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;;AAGlF;;;AAGG;IACH,YAAY,CAAC,MAAgB,EAAE,IAAe,EAAA;AAC5C,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;;AAGtC,QAAA,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;;AAGxD,IAAA,QAAQ,CAChB,KAAa,EACb,MAAmC,EACnC,OAA4C,EAAA;;QAG5C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;;QAGhC,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,MAAM,CAAC,KAAK,KAAK,CAAC,EAAE;;;AAGzE,gBAAA,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;;YAEnF,MAAM,CAAC,KAAK,EAAE;;aACT;;AAEL,YAAA,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE;AAChB,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACzF,aAAA,CAAC;;;IAII,WAAW,CACnB,KAAa,EACb,MAAmC,EAAA;;QAGnC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;;;QAIhC,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,EAAE;AACrB,gBAAA,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC/B,gBAAA,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;;;;IAK1B,WAAW,GAAA;QACT,KAAK,MAAM,GAAG,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC/D,cAAc,CAAC,QAAQ,CAAC;;AAE1B,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;;AAGpB;;;;;AAKG;AACH,IAAA,OAAO,CAAC,QAAc,EAAA;AACpB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;;AAGxB,QAAA,KAAK,MAAM,CAAC,KAAK,EAAE,EAAC,QAAQ,EAAC,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;AAC7C,YAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;;AAE/E,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,EAAC,QAAQ,EAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC7C,YAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;;;AAI9E,IAAA,UAAU,CAAC,QAAc,EAAA;AACvB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;;IAGrB,UAAU,CAAwB,IAAU,EAAE,OAAU,EAAA;;AAE9D,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;;;AAI3C,QAAA,IAAI,OAAO,YAAY,KAAK,WAAW,IAAI,YAAY,EAAE;YACvD,OAAO,CAAC,YAAY,CAAC,qBAAqB,EAAE,IAAI,CAAC,KAAK,CAAC;;;AAIzD,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;;AA1IvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,kBAmBjB,QAAQ,EAAA,EAAA,EAAA,KAAA,EACR,MAAM,EACN,EAAA,EAAA,KAAA,EAAA,SAAS,6BAGT,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;sHAxBV,gBAAgB,EAAA,CAAA;;sGAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;0BAoBI,MAAM;2BAAC,QAAQ;;0BACf,MAAM;2BAAC,MAAM;;0BACb,MAAM;2BAAC,SAAS;;0BAAG;;0BAGnB,MAAM;2BAAC,WAAW;;;ACzFhB,MAAM,cAAc,GAA2B;AACpD,IAAA,KAAK,EAAE,4BAA4B;AACnC,IAAA,OAAO,EAAE,8BAA8B;AACvC,IAAA,OAAO,EAAE,8BAA8B;AACvC,IAAA,KAAK,EAAE,sCAAsC;AAC7C,IAAA,OAAO,EAAE,+BAA+B;AACxC,IAAA,MAAM,EAAE,oCAAoC;CAC7C;AAED,MAAM,eAAe,GAAG,SAAS;AACjC,MAAM,oBAAoB,GAAG,uCAAuC;AACpE,MAAM,eAAe,GAAG,UAAU;AAE3B,MAAM,kBAAkB,GAAG,QAAQ;AACnC,MAAM,SAAS,GAAG,CAAW,QAAA,EAAA,kBAAkB,EAAE;AACjD,MAAM,YAAY,GAAG,CAAc,WAAA,EAAA,kBAAkB,EAAE;AAE9D;;AAEG;AACH,MAAM,0CAA0C,GAAG,IAAI;AAEvD;;;;;;AAMG;AACU,MAAA,kCAAkC,GAAG,IAAI,cAAc,CAClE,SAAS,GAAG,2BAA2B,GAAG,EAAE,EAC5C;AACE,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,0CAA0C;AAC1D,CAAA;AAGG,SAAU,oBAAoB,CAAC,gBAAwB,EAAA;IAC3D,OAAO,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,gBAAgB,CAAC;AAChE;AAEM,SAAU,iBAAiB,CAAC,gBAAwB,EAAA;IACxD,OAAO,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,gBAAgB,CAAC;AAC7D;AAEgB,SAAA,iBAAiB,CAAC,MAAc,EAAE,MAAgB,EAAA;AAChE,IAAA,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;AAC9D;AAEA;;;;;;;;;;;;;;;;;AAiBG;AACa,SAAA,yBAAyB,CAAC,QAAgB,EAAE,MAAgB,EAAA;IAC1E,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,OAAO,MAAM;;IAGf,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAEjE,IAAA,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,KAAI;QAC/B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;AAC7C,YAAA,OAAO,UAAU;;QAGnB,OAAO,UAAU,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC,EAAE,YAAY,KAAI;AAClE,YAAA,IACE,YAAY,CAAC,CAAC,CAAC,KAAK,GAAG;AACvB,gBAAA,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;AAChC,gBAAA,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,EAClC;gBACA,OAAO,CAAA,qBAAA,EAAwB,YAAY,CAAA,GAAA,CAAK;;AAGlD,YAAA,MAAM,EAAC,QAAQ,EAAE,oBAAoB,EAAC,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE,mBAAmB,CAAC;YAEnF,OAAO,CAAA,qBAAA,EAAwB,oBAAoB,CAAA,GAAA,CAAK;AAC1D,SAAC,CAAC;AACJ,KAAC,CAAC;AACJ;MAGa,mBAAmB,CAAA;AAUX,IAAA,YAAA;AACA,IAAA,gBAAA;AACgB,IAAA,KAAA;AACmB,IAAA,yBAAA;AACjB,IAAA,GAAA;AACL,IAAA,UAAA;AACrB,IAAA,MAAA;AAC2B,IAAA,KAAA;AACU,IAAA,iBAAA;AACE,IAAA,mBAAA;AAG/B,IAAA,cAAA;AArBF,IAAA,gBAAgB,GAAG,IAAI,GAAG,EAGxC;AACc,IAAA,eAAe;AACf,IAAA,gBAAgB;AACzB,IAAA,QAAQ;IAEhB,WACmB,CAAA,YAA0B,EAC1B,gBAAkC,EAClB,KAAa,EACM,yBAAkC,EACnD,GAAa,EAClB,UAAkB,EACvC,MAAc,EACa,QAAuB,IAAI,EACjB,iBAA0B,EACxB,mBAA2B,EAG1D,cAAA,GAAyD,IAAI,EAAA;QAZ7D,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QACA,IAAK,CAAA,KAAA,GAAL,KAAK;QACc,IAAyB,CAAA,yBAAA,GAAzB,yBAAyB;QAC1C,IAAG,CAAA,GAAA,GAAH,GAAG;QACR,IAAU,CAAA,UAAA,GAAV,UAAU;QAC/B,IAAM,CAAA,MAAA,GAAN,MAAM;QACqB,IAAK,CAAA,KAAA,GAAL,KAAK;QACK,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACf,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QAGlD,IAAc,CAAA,cAAA,GAAd,cAAc;QAE/B,IAAI,CAAC,gBAAgB,GAAG,OAAO,YAAY,KAAK,WAAW,IAAI,YAAY;AAC3E,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,mBAAmB,CAC5C,YAAY,EACZ,GAAG,EACH,MAAM,EACN,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,cAAc,GAClB,IAAI,CAAC,QAAQ,GAAGC,mCAAkC,EAAE,GACrD,IAAI,CAAC,mBAAmB,CACzB;;IAGH,cAAc,CAAC,OAAY,EAAE,IAA0B,EAAA;AACrD,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE;YACrB,OAAO,IAAI,CAAC,eAAe;;QAG7B,IACE,OAAO,YAAY,KAAK,WAAW;YACnC,YAAY;AACZ,YAAA,IAAI,CAAC,aAAa,KAAK,iBAAiB,CAAC,SAAS,EAClD;;YAEA,IAAI,GAAG,EAAC,GAAG,IAAI,EAAE,aAAa,EAAE,iBAAiB,CAAC,QAAQ,EAAC;;QAG7D,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC;;;AAGxD,QAAA,IAAI,QAAQ,YAAY,iCAAiC,EAAE;AACzD,YAAA,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC;;AACxB,aAAA,IAAI,QAAQ,YAAY,4BAA4B,EAAE;YAC3D,QAAQ,CAAC,WAAW,EAAE;;AAGxB,QAAA,OAAO,QAAQ;;IAGT,mBAAmB,CAAC,OAAY,EAAE,IAAmB,EAAA;AAC3D,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB;QAC9C,IAAI,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAE5C,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;AACpB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAC1B,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY;AACtC,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB;AAC9C,YAAA,MAAM,yBAAyB,GAAG,IAAI,CAAC,yBAAyB;AAChE,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB;AAC9C,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc;AAE1C,YAAA,QAAQ,IAAI,CAAC,aAAa;gBACxB,KAAK,iBAAiB,CAAC,QAAQ;AAC7B,oBAAA,QAAQ,GAAG,IAAI,iCAAiC,CAC9C,YAAY,EACZ,gBAAgB,EAChB,IAAI,EACJ,IAAI,CAAC,KAAK,EACV,yBAAyB,EACzB,GAAG,EACH,MAAM,EACN,gBAAgB,EAChB,cAAc,EACd,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,mBAAmB,CACzB;oBACD;gBACF,KAAK,iBAAiB,CAAC,SAAS;AAC9B,oBAAA,OAAO,IAAI,iBAAiB,CAC1B,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACP,IAAI,EACJ,GAAG,EACH,MAAM,EACN,IAAI,CAAC,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,mBAAmB,CACzB;AACH,gBAAA;AACE,oBAAA,QAAQ,GAAG,IAAI,4BAA4B,CACzC,YAAY,EACZ,gBAAgB,EAChB,IAAI,EACJ,yBAAyB,EACzB,GAAG,EACH,MAAM,EACN,gBAAgB,EAChB,cAAc,EACd,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,mBAAmB,CACzB;oBACD;;YAGJ,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC;;AAGzC,QAAA,OAAO,QAAQ;;IAGjB,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;;AAG/B;;;AAGG;AACO,IAAA,iBAAiB,CAAC,WAAmB,EAAA;AAC7C,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC;;AA1IhC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAYpB,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,MAAM,EACN,EAAA,EAAA,KAAA,EAAA,kCAAkC,aAClC,QAAQ,EAAA,EAAA,EAAA,KAAA,EACR,WAAW,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAEX,SAAS,EACT,EAAA,EAAA,KAAA,EAAAC,oBAAmB,EACnB,EAAA,EAAA,KAAA,EAAA,qBAAqB,aACrBC,eAAc,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;sHApBb,mBAAmB,EAAA,CAAA;;sGAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;0BAaI,MAAM;2BAAC,MAAM;;0BACb,MAAM;2BAAC,kCAAkC;;0BACzC,MAAM;2BAAC,QAAQ;;0BACf,MAAM;2BAAC,WAAW;;0BAElB,MAAM;2BAAC,SAAS;;0BAChB,MAAM;2BAACD,oBAAmB;;0BAC1B,MAAM;2BAAC,qBAAqB;;0BAC5B,MAAM;2BAACC,eAAc;;0BACrB;;AAyHL,MAAM,mBAAmB,CAAA;AAUJ,IAAA,YAAA;AACA,IAAA,GAAA;AACE,IAAA,MAAA;AACF,IAAA,gBAAA;AACA,IAAA,cAAA;AACE,IAAA,QAAA;AACA,IAAA,mBAAA;AAfrB,IAAA,IAAI,GAAyB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAEhD;;;AAGG;IACH,qBAAqB,GAAG,IAAI;AAE5B,IAAA,WAAA,CACmB,YAA0B,EAC1B,GAAa,EACX,MAAc,EAChB,gBAAyB,EACzB,cAAsD,EACpD,QAAkC,EAClC,mBAA2B,EAAA;QAN7B,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAG,CAAA,GAAA,GAAH,GAAG;QACD,IAAM,CAAA,MAAA,GAAN,MAAM;QACR,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAc,CAAA,cAAA,GAAd,cAAc;QACZ,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;;AAGxC,IAAA,OAAO;IAEP,WAAW,GAAG,IAAI;IAElB,aAAa,CAAC,IAAY,EAAE,SAAkB,EAAA;QAC5C,IAAI,SAAS,EAAE;;;;;;;;;;AAUb,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,SAAS,EAAE,IAAI,CAAC;;QAG/E,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC;;AAGrC,IAAA,aAAa,CAAC,KAAa,EAAA;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC;;AAGtC,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC;;IAGvC,WAAW,CAAC,MAAW,EAAE,QAAa,EAAA;AACpC,QAAA,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM;AACrE,QAAA,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC;;AAGpC,IAAA,YAAY,CAAC,MAAW,EAAE,QAAa,EAAE,QAAa,EAAA;QACpD,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM;AACrE,YAAA,YAAY,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC;;;IAIjD,WAAW,CAAC,OAAY,EAAE,QAAa,EAAA;AACrC,QAAA,MAAM,EAAC,QAAQ,EAAC,GAAG,IAAI,CAAC,QAAQ;QAChC,IAAI,QAAQ,EAAE;AACZ,YAAA,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,QAAQ,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,mBAAmB,CAAC;YAC7E;;;QAGF,QAAQ,CAAC,MAAM,EAAE;;IAGnB,iBAAiB,CAAC,cAA4B,EAAE,eAAyB,EAAA;QACvE,IAAI,EAAE,GACJ,OAAO,cAAc,KAAK,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,cAAc;QAC9F,IAAI,CAAC,EAAE,EAAE;YACP,MAAM,IAAIL,aAAY,CAAA,CAAA,IAAA,6CAEpB,CAAC,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS;gBAC5C,CAAiB,cAAA,EAAA,cAAc,CAA8B,4BAAA,CAAA,CAChE;;QAEH,IAAI,CAAC,eAAe,EAAE;AACpB,YAAA,EAAE,CAAC,WAAW,GAAG,EAAE;;AAErB,QAAA,OAAO,EAAE;;AAGX,IAAA,UAAU,CAAC,IAAS,EAAA;QAClB,OAAO,IAAI,CAAC,UAAU;;AAGxB,IAAA,WAAW,CAAC,IAAS,EAAA;QACnB,OAAO,IAAI,CAAC,WAAW;;AAGzB,IAAA,YAAY,CAAC,EAAO,EAAE,IAAY,EAAE,KAAa,EAAE,SAAkB,EAAA;QACnE,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,GAAG,SAAS,GAAG,GAAG,GAAG,IAAI;AAC7B,YAAA,MAAM,YAAY,GAAG,cAAc,CAAC,SAAS,CAAC;YAC9C,IAAI,YAAY,EAAE;gBAChB,EAAE,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC;;iBACvC;AACL,gBAAA,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC;;;aAEzB;AACL,YAAA,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC;;;AAIhC,IAAA,eAAe,CAAC,EAAO,EAAE,IAAY,EAAE,SAAkB,EAAA;QACvD,IAAI,SAAS,EAAE;AACb,YAAA,MAAM,YAAY,GAAG,cAAc,CAAC,SAAS,CAAC;YAC9C,IAAI,YAAY,EAAE;AAChB,gBAAA,EAAE,CAAC,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC;;iBACnC;gBACL,EAAE,CAAC,eAAe,CAAC,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,IAAI,CAAE,CAAA,CAAC;;;aAEvC;AACL,YAAA,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;;;IAI5B,QAAQ,CAAC,EAAO,EAAE,IAAY,EAAA;AAC5B,QAAA,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;;IAGxB,WAAW,CAAC,EAAO,EAAE,IAAY,EAAA;AAC/B,QAAA,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;;AAG3B,IAAA,QAAQ,CAAC,EAAO,EAAE,KAAa,EAAE,KAAU,EAAE,KAA0B,EAAA;AACrE,QAAA,IAAI,KAAK,IAAI,mBAAmB,CAAC,QAAQ,GAAG,mBAAmB,CAAC,SAAS,CAAC,EAAE;YAC1E,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,mBAAmB,CAAC,SAAS,GAAG,WAAW,GAAG,EAAE,CAAC;;aACvF;AACL,YAAA,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK;;;AAI3B,IAAA,WAAW,CAAC,EAAO,EAAE,KAAa,EAAE,KAA0B,EAAA;AAC5D,QAAA,IAAI,KAAK,GAAG,mBAAmB,CAAC,QAAQ,EAAE;;AAExC,YAAA,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;;aACzB;AACL,YAAA,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;;;AAIxB,IAAA,WAAW,CAAC,EAAO,EAAE,IAAY,EAAE,KAAU,EAAA;AAC3C,QAAA,IAAI,EAAE,IAAI,IAAI,EAAE;YACd;;AAGF,QAAA,CAAC,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS;AAC5C,YAAA,IAAI,CAAC,qBAAqB;AAC1B,YAAA,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC;AACxC,QAAA,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK;;IAGlB,QAAQ,CAAC,IAAS,EAAE,KAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;;AAGxB,IAAA,MAAM,CACJ,MAA4C,EAC5C,KAAa,EACb,QAAiC,EACjC,OAAyB,EAAA;AAEzB,QAAA,CAAC,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS;AAC5C,YAAA,IAAI,CAAC,qBAAqB;AAC1B,YAAA,oBAAoB,CAAC,KAAK,EAAE,UAAU,CAAC;AACzC,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC9B,YAAA,MAAM,GAAGM,OAAM,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;YACxD,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,IAAIN,aAAY,CAAA,IAAA,kDAEpB,CAAC,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS;AAC5C,oBAAA,CAAA,yBAAA,EAA4B,MAAM,CAAA,WAAA,EAAc,KAAK,CAAA,CAAE,CAC1D;;;QAIL,IAAI,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC;AAE3D,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,iBAAiB,EAAE;AAC1C,YAAA,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,eAAe,CAAC;;AAGzF,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,gBAAgB,CACvC,MAAM,EACN,KAAK,EACL,eAAe,EACf,OAAO,CACQ;;AAGX,IAAA,sBAAsB,CAAC,YAAsB,EAAA;;;;;QAKnD,OAAO,CAAC,KAAU,KAAI;;;;;;AAMpB,YAAA,IAAI,KAAK,KAAK,cAAc,EAAE;AAC5B,gBAAA,OAAO,YAAY;;;;AAKrB,YAAA,MAAM,oBAAoB,GACxB,OAAO,YAAY,KAAK,WAAW,IAAI;AACrC,kBAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,YAAY,CAAC,KAAK,CAAC;AAClD,kBAAE,YAAY,CAAC,KAAK,CAAC;AACzB,YAAA,IAAI,oBAAoB,KAAK,KAAK,EAAE;gBAClC,KAAK,CAAC,cAAc,EAAE;;AAGxB,YAAA,OAAO,SAAS;AAClB,SAAC;;AAEJ;AAED,MAAM,WAAW,GAAG,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG;AAC/C,SAAS,oBAAoB,CAAC,IAAY,EAAE,QAAgB,EAAA;IAC1D,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE;AACtC,QAAA,MAAM,IAAIA,aAAY,CAAA,IAAA,uDAEpB,CAAwB,qBAAA,EAAA,QAAQ,IAAI,IAAI,CAAA;;+DAEiB,IAAI,CAAA,+HAAA,CAAiI,CAC/L;;AAEL;AAEA,SAAS,cAAc,CAAC,IAAS,EAAA;IAC/B,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;AAClE;AAEA,MAAM,iBAAkB,SAAQ,mBAAmB,CAAA;AAKvC,IAAA,gBAAA;AACA,IAAA,MAAA;AALF,IAAA,UAAU;IAElB,WACE,CAAA,YAA0B,EAClB,gBAAkC,EAClC,MAAW,EACnB,SAAwB,EACxB,GAAa,EACb,MAAc,EACd,KAAoB,EACpB,gBAAyB,EACzB,cAAsD,EACtD,QAAkC,EAClC,mBAA2B,EAAA;AAE3B,QAAA,KAAK,CACH,YAAY,EACZ,GAAG,EACH,MAAM,EACN,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,mBAAmB,CACpB;QAnBO,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAM,CAAA,MAAA,GAAN,MAAM;AAmBd,QAAA,IAAI,CAAC,UAAU,GAAI,MAAc,CAAC,YAAY,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;QAC9D,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;AAC9C,QAAA,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM;QAC7B,IAAI,SAAS,EAAE;;YAEb,MAAM,QAAQ,GAAGM,OAAM,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE;AAChD,YAAA,MAAM,GAAG,yBAAyB,CAAC,QAAQ,EAAE,MAAM,CAAC;;QAGtD,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC;AAEhD,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;YAE/C,IAAI,KAAK,EAAE;AACT,gBAAA,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC;;AAGtC,YAAA,OAAO,CAAC,WAAW,GAAG,KAAK;AAC3B,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC;;;;;;;;AAStC,QAAA,MAAM,SAAS,GAAG,SAAS,CAAC,iBAAiB,IAAI;QACjD,IAAI,SAAS,EAAE;AACb,YAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;gBAChC,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC;gBAC/C,IAAI,KAAK,EAAE;AACT,oBAAA,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC;;AAErC,gBAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC;;;;AAKjC,IAAA,gBAAgB,CAAC,IAAS,EAAA;AAChC,QAAA,OAAO,IAAI,KAAK,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI;;IAG7C,WAAW,CAAC,MAAW,EAAE,QAAa,EAAA;AAC7C,QAAA,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;;AAE1D,IAAA,YAAY,CAAC,MAAW,EAAE,QAAa,EAAE,QAAa,EAAA;AAC7D,QAAA,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC;;IAErE,WAAW,CAAC,OAAY,EAAE,QAAa,EAAA;QAC9C,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC;;AAEjC,IAAA,UAAU,CAAC,IAAS,EAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;;IAGpE,OAAO,GAAA;QACd,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;;AAEpD;AAED,MAAM,4BAA6B,SAAQ,mBAAmB,CAAA;AAOzC,IAAA,gBAAA;AAET,IAAA,yBAAA;AARO,IAAA,MAAM;AACN,IAAA,SAAS;AACT,IAAA,kBAAkB;IAEnC,WACE,CAAA,YAA0B,EACT,gBAAkC,EACnD,SAAwB,EAChB,yBAAkC,EAC1C,GAAa,EACb,MAAc,EACd,gBAAyB,EACzB,cAAsD,EACtD,QAAkC,EAClC,iBAA0B,EAC1B,mBAA2B,EAC3B,MAAe,EAAA;AAEf,QAAA,KAAK,CACH,YAAY,EACZ,GAAG,EACH,MAAM,EACN,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,mBAAmB,CACpB;QApBgB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAEzB,IAAyB,CAAA,yBAAA,GAAzB,yBAAyB;AAmBjC,QAAA,IAAI,CAAC,kBAAkB,GAAG,iBAAiB;AAC3C,QAAA,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM;QAC7B,IAAI,SAAS,EAAE;;YAEb,MAAM,QAAQ,GAAGA,OAAM,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE;AAChD,YAAA,MAAM,GAAG,yBAAyB,CAAC,QAAQ,EAAE,MAAM,CAAC;;AAGtD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;QACjE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,iBAAiB,GAAG,MAAM,CAAC;;IAGxD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC;;IAGrD,OAAO,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACnC;;;;;;;;;;;;;;QAeF,IACE,CAAC,OAAO,YAAY,KAAK,WAAW,IAAI,CAAC,YAAY;YACrD,CAAC,IAAI,CAAC,kBAAkB;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EACtB;AACA,YAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;gBACjC,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC;AACjE,iBAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC;AAC9B,aAAC,CAAC;YACF;;AAEF,QAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC;;AAElE;AAED,MAAM,iCAAkC,SAAQ,4BAA4B,CAAA;AAClE,IAAA,WAAW;AACX,IAAA,QAAQ;IAEhB,WACE,CAAA,YAA0B,EAC1B,gBAAkC,EAClC,SAAwB,EACxB,KAAa,EACb,yBAAkC,EAClC,GAAa,EACb,MAAc,EACd,gBAAyB,EACzB,cAAsD,EACtD,QAAkC,EAClC,iBAA0B,EAC1B,mBAA2B,EAAA;QAE3B,MAAM,MAAM,GAAG,KAAK,GAAG,GAAG,GAAG,SAAS,CAAC,EAAE;QACzC,KAAK,CACH,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,yBAAyB,EACzB,GAAG,EACH,MAAM,EACN,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,iBAAiB,EACjB,mBAAmB,EACnB,MAAM,CACP;AACD,QAAA,IAAI,CAAC,WAAW,GAAG,oBAAoB,CAAC,MAAM,CAAC;AAC/C,QAAA,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC;;AAG3C,IAAA,WAAW,CAAC,OAAY,EAAA;QACtB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;;IAGtC,aAAa,CAAC,MAAW,EAAE,IAAY,EAAA;QAC9C,MAAM,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC;QAC5C,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;AAC5C,QAAA,OAAO,EAAE;;AAEZ;;;;"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license Angular v20.2.0-
|
2
|
+
* @license Angular v20.2.0-rc.1
|
3
3
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -164,10 +164,10 @@ class Meta {
|
|
164
164
|
_getMetaKeyMap(prop) {
|
165
165
|
return META_KEYS_MAP[prop] || prop;
|
166
166
|
}
|
167
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-
|
168
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-
|
167
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: Meta, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
168
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: Meta, providedIn: 'root' });
|
169
169
|
}
|
170
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-
|
170
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: Meta, decorators: [{
|
171
171
|
type: Injectable,
|
172
172
|
args: [{ providedIn: 'root' }]
|
173
173
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
@@ -209,10 +209,10 @@ class Title {
|
|
209
209
|
setTitle(newTitle) {
|
210
210
|
this._doc.title = newTitle || '';
|
211
211
|
}
|
212
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-
|
213
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-
|
212
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: Title, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
213
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: Title, providedIn: 'root' });
|
214
214
|
}
|
215
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-
|
215
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: Title, decorators: [{
|
216
216
|
type: Injectable,
|
217
217
|
args: [{ providedIn: 'root' }]
|
218
218
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
@@ -493,10 +493,10 @@ class HammerGestureConfig {
|
|
493
493
|
}
|
494
494
|
return mc;
|
495
495
|
}
|
496
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-
|
497
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-
|
496
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: HammerGestureConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
497
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: HammerGestureConfig });
|
498
498
|
}
|
499
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-
|
499
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: HammerGestureConfig, decorators: [{
|
500
500
|
type: Injectable
|
501
501
|
}] });
|
502
502
|
/**
|
@@ -597,10 +597,10 @@ class HammerGesturesPlugin extends EventManagerPlugin {
|
|
597
597
|
isCustomEvent(eventName) {
|
598
598
|
return this._config.events.indexOf(eventName) > -1;
|
599
599
|
}
|
600
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-
|
601
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-
|
600
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: HammerGesturesPlugin, deps: [{ token: DOCUMENT }, { token: HAMMER_GESTURE_CONFIG }, { token: i0.Injector }, { token: HAMMER_LOADER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
601
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: HammerGesturesPlugin });
|
602
602
|
}
|
603
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-
|
603
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: HammerGesturesPlugin, decorators: [{
|
604
604
|
type: Injectable
|
605
605
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
606
606
|
type: Inject,
|
@@ -628,9 +628,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.6",
|
|
628
628
|
* @deprecated The hammer integration is deprecated. Replace it by your own implementation.
|
629
629
|
*/
|
630
630
|
class HammerModule {
|
631
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-
|
632
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.0-
|
633
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.0-
|
631
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: HammerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
632
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.0-rc.1", ngImport: i0, type: HammerModule });
|
633
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: HammerModule, providers: [
|
634
634
|
{
|
635
635
|
provide: EVENT_MANAGER_PLUGINS,
|
636
636
|
useClass: HammerGesturesPlugin,
|
@@ -640,7 +640,7 @@ class HammerModule {
|
|
640
640
|
{ provide: HAMMER_GESTURE_CONFIG, useClass: HammerGestureConfig },
|
641
641
|
] });
|
642
642
|
}
|
643
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-
|
643
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: HammerModule, decorators: [{
|
644
644
|
type: NgModule,
|
645
645
|
args: [{
|
646
646
|
providers: [
|
@@ -687,10 +687,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.6",
|
|
687
687
|
* @publicApi
|
688
688
|
*/
|
689
689
|
class DomSanitizer {
|
690
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-
|
691
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-
|
690
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: DomSanitizer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
691
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: DomSanitizer, providedIn: 'root', useExisting: i0.forwardRef(() => DomSanitizerImpl) });
|
692
692
|
}
|
693
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-
|
693
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: DomSanitizer, decorators: [{
|
694
694
|
type: Injectable,
|
695
695
|
args: [{ providedIn: 'root', useExisting: forwardRef(() => DomSanitizerImpl) }]
|
696
696
|
}] });
|
@@ -753,10 +753,10 @@ class DomSanitizerImpl extends DomSanitizer {
|
|
753
753
|
bypassSecurityTrustResourceUrl(value) {
|
754
754
|
return _bypassSanitizationTrustResourceUrl(value);
|
755
755
|
}
|
756
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-
|
757
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-
|
756
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: DomSanitizerImpl, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
757
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: DomSanitizerImpl, providedIn: 'root' });
|
758
758
|
}
|
759
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-
|
759
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: DomSanitizerImpl, decorators: [{
|
760
760
|
type: Injectable,
|
761
761
|
args: [{ providedIn: 'root' }]
|
762
762
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
@@ -989,7 +989,7 @@ function provideClientHydration(...features) {
|
|
989
989
|
/**
|
990
990
|
* @publicApi
|
991
991
|
*/
|
992
|
-
const VERSION = new Version('20.2.0-
|
992
|
+
const VERSION = new Version('20.2.0-rc.1');
|
993
993
|
|
994
994
|
export { By, DomSanitizer, EVENT_MANAGER_PLUGINS, EventManagerPlugin, HAMMER_GESTURE_CONFIG, HAMMER_LOADER, HammerGestureConfig, HammerModule, HydrationFeatureKind, Meta, Title, VERSION, disableDebugTools, enableDebugTools, provideClientHydration, withEventReplay, withHttpTransferCacheOptions, withI18nSupport, withIncrementalHydration, withNoHttpTransferCache, DomSanitizerImpl as ɵDomSanitizerImpl, HammerGesturesPlugin as ɵHammerGesturesPlugin };
|
995
995
|
//# sourceMappingURL=platform-browser.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"platform-browser.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/browser/meta.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/browser/title.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/dom/util.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/browser/tools/common_tools.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/browser/tools/tools.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/dom/debug/by.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/dom/events/hammer_gestures.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/security/dom_sanitization_service.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/hydration.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/version.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {DOCUMENT, ɵDomAdapter as DomAdapter, ɵgetDOM as getDOM} from '@angular/common';\nimport {Inject, Injectable} from '@angular/core';\n\n/**\n * Represents the attributes of an HTML `<meta>` element. The element itself is\n * represented by the internal `HTMLMetaElement`.\n *\n * @see [HTML meta tag](https://developer.mozilla.org/docs/Web/HTML/Element/meta)\n * @see {@link Meta}\n *\n * @publicApi\n */\nexport type MetaDefinition = {\n charset?: string;\n content?: string;\n httpEquiv?: string;\n id?: string;\n itemprop?: string;\n name?: string;\n property?: string;\n scheme?: string;\n url?: string;\n} & {\n // TODO(IgorMinar): this type looks wrong\n [prop: string]: string;\n};\n\n/**\n * A service for managing HTML `<meta>` tags.\n *\n * Properties of the `MetaDefinition` object match the attributes of the\n * HTML `<meta>` tag. These tags define document metadata that is important for\n * things like configuring a Content Security Policy, defining browser compatibility\n * and security settings, setting HTTP Headers, defining rich content for social sharing,\n * and Search Engine Optimization (SEO).\n *\n * To identify specific `<meta>` tags in a document, use an attribute selection\n * string in the format `\"tag_attribute='value string'\"`.\n * For example, an `attrSelector` value of `\"name='description'\"` matches a tag\n * whose `name` attribute has the value `\"description\"`.\n * Selectors are used with the `querySelector()` Document method,\n * in the format `meta[{attrSelector}]`.\n *\n * @see [HTML meta tag](https://developer.mozilla.org/docs/Web/HTML/Element/meta)\n * @see [Document.querySelector()](https://developer.mozilla.org/docs/Web/API/Document/querySelector)\n *\n *\n * @publicApi\n */\n@Injectable({providedIn: 'root'})\nexport class Meta {\n private _dom: DomAdapter;\n constructor(@Inject(DOCUMENT) private _doc: any) {\n this._dom = getDOM();\n }\n /**\n * Retrieves or creates a specific `<meta>` tag element in the current HTML document.\n * In searching for an existing tag, Angular attempts to match the `name` or `property` attribute\n * values in the provided tag definition, and verifies that all other attribute values are equal.\n * If an existing element is found, it is returned and is not modified in any way.\n * @param tag The definition of a `<meta>` element to match or create.\n * @param forceCreation True to create a new element without checking whether one already exists.\n * @returns The existing element with the same attributes and values if found,\n * the new element if no match is found, or `null` if the tag parameter is not defined.\n */\n addTag(tag: MetaDefinition, forceCreation: boolean = false): HTMLMetaElement | null {\n if (!tag) return null;\n return this._getOrCreateElement(tag, forceCreation);\n }\n\n /**\n * Retrieves or creates a set of `<meta>` tag elements in the current HTML document.\n * In searching for an existing tag, Angular attempts to match the `name` or `property` attribute\n * values in the provided tag definition, and verifies that all other attribute values are equal.\n * @param tags An array of tag definitions to match or create.\n * @param forceCreation True to create new elements without checking whether they already exist.\n * @returns The matching elements if found, or the new elements.\n */\n addTags(tags: MetaDefinition[], forceCreation: boolean = false): HTMLMetaElement[] {\n if (!tags) return [];\n return tags.reduce((result: HTMLMetaElement[], tag: MetaDefinition) => {\n if (tag) {\n result.push(this._getOrCreateElement(tag, forceCreation));\n }\n return result;\n }, []);\n }\n\n /**\n * Retrieves a `<meta>` tag element in the current HTML document.\n * @param attrSelector The tag attribute and value to match against, in the format\n * `\"tag_attribute='value string'\"`.\n * @returns The matching element, if any.\n */\n getTag(attrSelector: string): HTMLMetaElement | null {\n if (!attrSelector) return null;\n return this._doc.querySelector(`meta[${attrSelector}]`) || null;\n }\n\n /**\n * Retrieves a set of `<meta>` tag elements in the current HTML document.\n * @param attrSelector The tag attribute and value to match against, in the format\n * `\"tag_attribute='value string'\"`.\n * @returns The matching elements, if any.\n */\n getTags(attrSelector: string): HTMLMetaElement[] {\n if (!attrSelector) return [];\n const list /*NodeList*/ = this._doc.querySelectorAll(`meta[${attrSelector}]`);\n return list ? [].slice.call(list) : [];\n }\n\n /**\n * Modifies an existing `<meta>` tag element in the current HTML document.\n * @param tag The tag description with which to replace the existing tag content.\n * @param selector A tag attribute and value to match against, to identify\n * an existing tag. A string in the format `\"tag_attribute=`value string`\"`.\n * If not supplied, matches a tag with the same `name` or `property` attribute value as the\n * replacement tag.\n * @return The modified element.\n */\n updateTag(tag: MetaDefinition, selector?: string): HTMLMetaElement | null {\n if (!tag) return null;\n selector = selector || this._parseSelector(tag);\n const meta: HTMLMetaElement = this.getTag(selector)!;\n if (meta) {\n return this._setMetaElementAttributes(tag, meta);\n }\n return this._getOrCreateElement(tag, true);\n }\n\n /**\n * Removes an existing `<meta>` tag element from the current HTML document.\n * @param attrSelector A tag attribute and value to match against, to identify\n * an existing tag. A string in the format `\"tag_attribute=`value string`\"`.\n */\n removeTag(attrSelector: string): void {\n this.removeTagElement(this.getTag(attrSelector)!);\n }\n\n /**\n * Removes an existing `<meta>` tag element from the current HTML document.\n * @param meta The tag definition to match against to identify an existing tag.\n */\n removeTagElement(meta: HTMLMetaElement): void {\n if (meta) {\n this._dom.remove(meta);\n }\n }\n\n private _getOrCreateElement(\n meta: MetaDefinition,\n forceCreation: boolean = false,\n ): HTMLMetaElement {\n if (!forceCreation) {\n const selector: string = this._parseSelector(meta);\n // It's allowed to have multiple elements with the same name so it's not enough to\n // just check that element with the same name already present on the page. We also need to\n // check if element has tag attributes\n const elem = this.getTags(selector).filter((elem) => this._containsAttributes(meta, elem))[0];\n if (elem !== undefined) return elem;\n }\n const element: HTMLMetaElement = this._dom.createElement('meta') as HTMLMetaElement;\n this._setMetaElementAttributes(meta, element);\n const head = this._doc.getElementsByTagName('head')[0];\n head.appendChild(element);\n return element;\n }\n\n private _setMetaElementAttributes(tag: MetaDefinition, el: HTMLMetaElement): HTMLMetaElement {\n Object.keys(tag).forEach((prop: string) =>\n el.setAttribute(this._getMetaKeyMap(prop), tag[prop]),\n );\n return el;\n }\n\n private _parseSelector(tag: MetaDefinition): string {\n const attr: string = tag.name ? 'name' : 'property';\n return `${attr}=\"${tag[attr]}\"`;\n }\n\n private _containsAttributes(tag: MetaDefinition, elem: HTMLMetaElement): boolean {\n return Object.keys(tag).every(\n (key: string) => elem.getAttribute(this._getMetaKeyMap(key)) === tag[key],\n );\n }\n\n private _getMetaKeyMap(prop: string): string {\n return META_KEYS_MAP[prop] || prop;\n }\n}\n\n/**\n * Mapping for MetaDefinition properties with their correct meta attribute names\n */\nconst META_KEYS_MAP: {[prop: string]: string} = {\n httpEquiv: 'http-equiv',\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable} from '@angular/core';\n\n/**\n * A service that can be used to get and set the title of a current HTML document.\n *\n * Since an Angular application can't be bootstrapped on the entire HTML document (`<html>` tag)\n * it is not possible to bind to the `text` property of the `HTMLTitleElement` elements\n * (representing the `<title>` tag). Instead, this service can be used to set and get the current\n * title value.\n *\n * @publicApi\n */\n@Injectable({providedIn: 'root'})\nexport class Title {\n constructor(@Inject(DOCUMENT) private _doc: any) {}\n /**\n * Get the title of the current HTML document.\n */\n getTitle(): string {\n return this._doc.title;\n }\n\n /**\n * Set the title of the current HTML document.\n * @param newTitle\n */\n setTitle(newTitle: string) {\n this._doc.title = newTitle || '';\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n/// <reference path=\"../../../goog.d.ts\" />\n\nimport {ɵglobal as global} from '@angular/core';\n\n/**\n * Exports the value under a given `name` in the global property `ng`. For example `ng.probe` if\n * `name` is `'probe'`.\n * @param name Name under which it will be exported. Keep in mind this will be a property of the\n * global `ng` object.\n * @param value The value to export.\n */\nexport function exportNgVar(name: string, value: any): void {\n if (typeof COMPILED === 'undefined' || !COMPILED) {\n // Note: we can't export `ng` when using closure enhanced optimization as:\n // - closure declares globals itself for minified names, which sometimes clobber our `ng` global\n // - we can't declare a closure extern as the namespace `ng` is already used within Google\n // for typings for angularJS (via `goog.provide('ng....')`).\n const ng = (global['ng'] = (global['ng'] as {[key: string]: any} | undefined) || {});\n ng[name] = value;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ApplicationRef, ComponentRef} from '@angular/core';\n\nexport class ChangeDetectionPerfRecord {\n constructor(\n public msPerTick: number,\n public numTicks: number,\n ) {}\n}\n\n/**\n * Entry point for all Angular profiling-related debug tools. This object\n * corresponds to the `ng.profiler` in the dev console.\n */\nexport class AngularProfiler {\n appRef: ApplicationRef;\n\n constructor(ref: ComponentRef<any>) {\n this.appRef = ref.injector.get(ApplicationRef);\n }\n\n // tslint:disable:no-console\n /**\n * Exercises change detection in a loop and then prints the average amount of\n * time in milliseconds how long a single round of change detection takes for\n * the current state of the UI. It runs a minimum of 5 rounds for a minimum\n * of 500 milliseconds.\n *\n * Optionally, a user may pass a `config` parameter containing a map of\n * options. Supported options are:\n *\n * `record` (boolean) - causes the profiler to record a CPU profile while\n * it exercises the change detector. Example:\n *\n * ```ts\n * ng.profiler.timeChangeDetection({record: true})\n * ```\n */\n timeChangeDetection(config: any): ChangeDetectionPerfRecord {\n const record = config && config['record'];\n const profileName = 'Change Detection';\n // Profiler is not available in Android browsers without dev tools opened\n if (record && 'profile' in console && typeof console.profile === 'function') {\n console.profile(profileName);\n }\n const start = performance.now();\n let numTicks = 0;\n while (numTicks < 5 || performance.now() - start < 500) {\n this.appRef.tick();\n numTicks++;\n }\n const end = performance.now();\n if (record && 'profileEnd' in console && typeof console.profileEnd === 'function') {\n console.profileEnd(profileName);\n }\n const msPerTick = (end - start) / numTicks;\n console.log(`ran ${numTicks} change detection cycles`);\n console.log(`${msPerTick.toFixed(2)} ms per check`);\n\n return new ChangeDetectionPerfRecord(msPerTick, numTicks);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ComponentRef} from '@angular/core';\n\nimport {exportNgVar} from '../../dom/util';\n\nimport {AngularProfiler} from './common_tools';\n\nconst PROFILER_GLOBAL_NAME = 'profiler';\n\n/**\n * Enabled Angular debug tools that are accessible via your browser's\n * developer console.\n *\n * Usage:\n *\n * 1. Open developer console (e.g. in Chrome Ctrl + Shift + j)\n * 1. Type `ng.` (usually the console will show auto-complete suggestion)\n * 1. Try the change detection profiler `ng.profiler.timeChangeDetection()`\n * then hit Enter.\n *\n * @publicApi\n */\nexport function enableDebugTools<T>(ref: ComponentRef<T>): ComponentRef<T> {\n exportNgVar(PROFILER_GLOBAL_NAME, new AngularProfiler(ref));\n return ref;\n}\n\n/**\n * Disables Angular tools.\n *\n * @publicApi\n */\nexport function disableDebugTools(): void {\n exportNgVar(PROFILER_GLOBAL_NAME, null);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ɵgetDOM as getDOM} from '@angular/common';\nimport {DebugElement, DebugNode, Predicate, Type} from '@angular/core';\n\n/**\n * Predicates for use with {@link DebugElement}'s query functions.\n *\n * @publicApi\n */\nexport class By {\n /**\n * Match all nodes.\n *\n * @usageNotes\n * ### Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_all'}\n */\n static all(): Predicate<DebugNode> {\n return () => true;\n }\n\n /**\n * Match elements by the given CSS selector.\n *\n * @usageNotes\n * ### Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_css'}\n */\n static css(selector: string): Predicate<DebugElement> {\n return (debugElement) => {\n return debugElement.nativeElement != null\n ? elementMatches(debugElement.nativeElement, selector)\n : false;\n };\n }\n\n /**\n * Match nodes that have the given directive present.\n *\n * @usageNotes\n * ### Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_directive'}\n */\n static directive(type: Type<any>): Predicate<DebugNode> {\n return (debugNode) => debugNode.providerTokens!.indexOf(type) !== -1;\n }\n}\n\nfunction elementMatches(n: any, selector: string): boolean {\n if (getDOM().isElementNode(n)) {\n return (\n (n.matches && n.matches(selector)) ||\n (n.msMatchesSelector && n.msMatchesSelector(selector)) ||\n (n.webkitMatchesSelector && n.webkitMatchesSelector(selector))\n );\n }\n\n return false;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n/// <reference types=\"hammerjs\" />\n\nimport {DOCUMENT} from '@angular/common';\nimport {\n Inject,\n Injectable,\n InjectionToken,\n Injector,\n NgModule,\n Optional,\n ɵConsole as Console,\n} from '@angular/core';\n\nimport {EVENT_MANAGER_PLUGINS, EventManagerPlugin} from './event_manager';\n\n/**\n * Supported HammerJS recognizer event names.\n */\nconst EVENT_NAMES = {\n // pan\n 'pan': true,\n 'panstart': true,\n 'panmove': true,\n 'panend': true,\n 'pancancel': true,\n 'panleft': true,\n 'panright': true,\n 'panup': true,\n 'pandown': true,\n // pinch\n 'pinch': true,\n 'pinchstart': true,\n 'pinchmove': true,\n 'pinchend': true,\n 'pinchcancel': true,\n 'pinchin': true,\n 'pinchout': true,\n // press\n 'press': true,\n 'pressup': true,\n // rotate\n 'rotate': true,\n 'rotatestart': true,\n 'rotatemove': true,\n 'rotateend': true,\n 'rotatecancel': true,\n // swipe\n 'swipe': true,\n 'swipeleft': true,\n 'swiperight': true,\n 'swipeup': true,\n 'swipedown': true,\n // tap\n 'tap': true,\n 'doubletap': true,\n};\n\n/**\n * DI token for providing [HammerJS](https://hammerjs.github.io/) support to Angular.\n * @see {@link HammerGestureConfig}\n *\n * @ngModule HammerModule\n * @publicApi\n *\n * @deprecated The HammerJS integration is deprecated. Replace it by your own implementation.\n */\nexport const HAMMER_GESTURE_CONFIG = new InjectionToken<HammerGestureConfig>(\n typeof ngDevMode === 'undefined' || ngDevMode ? 'HammerGestureConfig' : '',\n);\n\n/**\n * Function that loads HammerJS, returning a promise that is resolved once HammerJs is loaded.\n *\n * @publicApi\n *\n * @deprecated The hammerjs integration is deprecated. Replace it by your own implementation.\n */\nexport type HammerLoader = () => Promise<void>;\n\n/**\n * Injection token used to provide a HammerLoader to Angular.\n *\n * @see {@link HammerLoader}\n *\n * @publicApi\n *\n * @deprecated The HammerJS integration is deprecated. Replace it by your own implementation.\n */\nexport const HAMMER_LOADER = new InjectionToken<HammerLoader>(\n typeof ngDevMode === 'undefined' || ngDevMode ? 'HammerLoader' : '',\n);\n\nexport interface HammerInstance {\n on(eventName: string, callback?: Function): void;\n off(eventName: string, callback?: Function): void;\n destroy?(): void;\n}\n\n/**\n * An injectable [HammerJS Manager](https://hammerjs.github.io/api/#hammermanager)\n * for gesture recognition. Configures specific event recognition.\n * @publicApi\n *\n * @deprecated The HammerJS integration is deprecated. Replace it by your own implementation.\n */\n@Injectable()\nexport class HammerGestureConfig {\n /**\n * A set of supported event names for gestures to be used in Angular.\n * Angular supports all built-in recognizers, as listed in\n * [HammerJS documentation](https://hammerjs.github.io/).\n */\n events: string[] = [];\n\n /**\n * Maps gesture event names to a set of configuration options\n * that specify overrides to the default values for specific properties.\n *\n * The key is a supported event name to be configured,\n * and the options object contains a set of properties, with override values\n * to be applied to the named recognizer event.\n * For example, to disable recognition of the rotate event, specify\n * `{\"rotate\": {\"enable\": false}}`.\n *\n * Properties that are not present take the HammerJS default values.\n * For information about which properties are supported for which events,\n * and their allowed and default values, see\n * [HammerJS documentation](https://hammerjs.github.io/).\n *\n */\n overrides: {[key: string]: Object} = {};\n\n /**\n * Properties whose default values can be overridden for a given event.\n * Different sets of properties apply to different events.\n * For information about which properties are supported for which events,\n * and their allowed and default values, see\n * [HammerJS documentation](https://hammerjs.github.io/).\n */\n options?: {\n cssProps?: any;\n domEvents?: boolean;\n enable?: boolean | ((manager: any) => boolean);\n preset?: any[];\n touchAction?: string;\n recognizers?: any[];\n inputClass?: any;\n inputTarget?: EventTarget;\n };\n\n /**\n * Creates a [HammerJS Manager](https://hammerjs.github.io/api/#hammermanager)\n * and attaches it to a given HTML element.\n * @param element The element that will recognize gestures.\n * @returns A HammerJS event-manager object.\n */\n buildHammer(element: HTMLElement): HammerInstance {\n const mc = new Hammer!(element, this.options);\n\n mc.get('pinch').set({enable: true});\n mc.get('rotate').set({enable: true});\n\n for (const eventName in this.overrides) {\n mc.get(eventName).set(this.overrides[eventName]);\n }\n\n return mc;\n }\n}\n\n/**\n * Event plugin that adds Hammer support to an application.\n *\n * @ngModule HammerModule\n */\n@Injectable()\nexport class HammerGesturesPlugin extends EventManagerPlugin {\n private _loaderPromise: Promise<void> | null = null;\n\n constructor(\n @Inject(DOCUMENT) doc: any,\n @Inject(HAMMER_GESTURE_CONFIG) private _config: HammerGestureConfig,\n private _injector: Injector,\n @Optional() @Inject(HAMMER_LOADER) private loader?: HammerLoader | null,\n ) {\n super(doc);\n }\n\n override supports(eventName: string): boolean {\n if (!EVENT_NAMES.hasOwnProperty(eventName.toLowerCase()) && !this.isCustomEvent(eventName)) {\n return false;\n }\n\n if (!(window as any).Hammer && !this.loader) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Get a `Console` through an injector to tree-shake the\n // class when it is unused in production.\n const _console = this._injector.get(Console);\n _console.warn(\n `The \"${eventName}\" event cannot be bound because Hammer.JS is not ` +\n `loaded and no custom loader has been specified.`,\n );\n }\n return false;\n }\n\n return true;\n }\n\n override addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {\n const zone = this.manager.getZone();\n eventName = eventName.toLowerCase();\n\n // If Hammer is not present but a loader is specified, we defer adding the event listener\n // until Hammer is loaded.\n if (!(window as any).Hammer && this.loader) {\n this._loaderPromise = this._loaderPromise || zone.runOutsideAngular(() => this.loader!());\n // This `addEventListener` method returns a function to remove the added listener.\n // Until Hammer is loaded, the returned function needs to *cancel* the registration rather\n // than remove anything.\n let cancelRegistration = false;\n let deregister: Function = () => {\n cancelRegistration = true;\n };\n\n zone.runOutsideAngular(() =>\n this._loaderPromise!.then(() => {\n // If Hammer isn't actually loaded when the custom loader resolves, give up.\n if (!(window as any).Hammer) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const _console = this._injector.get(Console);\n _console.warn(`The custom HAMMER_LOADER completed, but Hammer.JS is not present.`);\n }\n deregister = () => {};\n return;\n }\n\n if (!cancelRegistration) {\n // Now that Hammer is loaded and the listener is being loaded for real,\n // the deregistration function changes from canceling registration to\n // removal.\n deregister = this.addEventListener(element, eventName, handler);\n }\n }).catch(() => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const _console = this._injector.get(Console);\n _console.warn(\n `The \"${eventName}\" event cannot be bound because the custom ` +\n `Hammer.JS loader failed.`,\n );\n }\n deregister = () => {};\n }),\n );\n\n // Return a function that *executes* `deregister` (and not `deregister` itself) so that we\n // can change the behavior of `deregister` once the listener is added. Using a closure in\n // this way allows us to avoid any additional data structures to track listener removal.\n return () => {\n deregister();\n };\n }\n\n return zone.runOutsideAngular(() => {\n // Creating the manager bind events, must be done outside of angular\n const mc = this._config.buildHammer(element);\n const callback = function (eventObj: HammerInput) {\n zone.runGuarded(function () {\n handler(eventObj);\n });\n };\n mc.on(eventName, callback);\n return () => {\n mc.off(eventName, callback);\n // destroy mc to prevent memory leak\n if (typeof mc.destroy === 'function') {\n mc.destroy();\n }\n };\n });\n }\n\n isCustomEvent(eventName: string): boolean {\n return this._config.events.indexOf(eventName) > -1;\n }\n}\n\n/**\n * Adds support for HammerJS.\n *\n * Import this module at the root of your application so that Angular can work with\n * HammerJS to detect gesture events.\n *\n * Note that applications still need to include the HammerJS script itself. This module\n * simply sets up the coordination layer between HammerJS and Angular's `EventManager`.\n *\n * @publicApi\n *\n * @deprecated The hammer integration is deprecated. Replace it by your own implementation.\n */\n@NgModule({\n providers: [\n {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: HammerGesturesPlugin,\n multi: true,\n deps: [DOCUMENT, HAMMER_GESTURE_CONFIG, Injector, [new Optional(), HAMMER_LOADER]],\n },\n {provide: HAMMER_GESTURE_CONFIG, useClass: HammerGestureConfig},\n ],\n})\nexport class HammerModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {DOCUMENT} from '@angular/common';\nimport {\n forwardRef,\n Inject,\n Injectable,\n Sanitizer,\n SecurityContext,\n ɵ_sanitizeHtml as _sanitizeHtml,\n ɵ_sanitizeUrl as _sanitizeUrl,\n ɵallowSanitizationBypassAndThrow as allowSanitizationBypassOrThrow,\n ɵbypassSanitizationTrustHtml as bypassSanitizationTrustHtml,\n ɵbypassSanitizationTrustResourceUrl as bypassSanitizationTrustResourceUrl,\n ɵbypassSanitizationTrustScript as bypassSanitizationTrustScript,\n ɵbypassSanitizationTrustStyle as bypassSanitizationTrustStyle,\n ɵbypassSanitizationTrustUrl as bypassSanitizationTrustUrl,\n ɵBypassType as BypassType,\n ɵRuntimeError as RuntimeError,\n ɵunwrapSafeValue as unwrapSafeValue,\n ɵXSS_SECURITY_URL as XSS_SECURITY_URL,\n} from '@angular/core';\n\nimport {RuntimeErrorCode} from '../errors';\n\nexport {SecurityContext};\n\n/**\n * Marker interface for a value that's safe to use in a particular context.\n *\n * @publicApi\n */\nexport interface SafeValue {}\n\n/**\n * Marker interface for a value that's safe to use as HTML.\n *\n * @publicApi\n */\nexport interface SafeHtml extends SafeValue {}\n\n/**\n * Marker interface for a value that's safe to use as style (CSS).\n *\n * @publicApi\n */\nexport interface SafeStyle extends SafeValue {}\n\n/**\n * Marker interface for a value that's safe to use as JavaScript.\n *\n * @publicApi\n */\nexport interface SafeScript extends SafeValue {}\n\n/**\n * Marker interface for a value that's safe to use as a URL linking to a document.\n *\n * @publicApi\n */\nexport interface SafeUrl extends SafeValue {}\n\n/**\n * Marker interface for a value that's safe to use as a URL to load executable code from.\n *\n * @publicApi\n */\nexport interface SafeResourceUrl extends SafeValue {}\n\n/**\n * DomSanitizer helps preventing Cross Site Scripting Security bugs (XSS) by sanitizing\n * values to be safe to use in the different DOM contexts.\n *\n * For example, when binding a URL in an `<a [href]=\"someValue\">` hyperlink, `someValue` will be\n * sanitized so that an attacker cannot inject e.g. a `javascript:` URL that would execute code on\n * the website.\n *\n * In specific situations, it might be necessary to disable sanitization, for example if the\n * application genuinely needs to produce a `javascript:` style link with a dynamic value in it.\n * Users can bypass security by constructing a value with one of the `bypassSecurityTrust...`\n * methods, and then binding to that value from the template.\n *\n * These situations should be very rare, and extraordinary care must be taken to avoid creating a\n * Cross Site Scripting (XSS) security bug!\n *\n * When using `bypassSecurityTrust...`, make sure to call the method as early as possible and as\n * close as possible to the source of the value, to make it easy to verify no security bug is\n * created by its use.\n *\n * It is not required (and not recommended) to bypass security if the value is safe, e.g. a URL that\n * does not start with a suspicious protocol, or an HTML snippet that does not contain dangerous\n * code. The sanitizer leaves safe values intact.\n *\n * @security Calling any of the `bypassSecurityTrust...` APIs disables Angular's built-in\n * sanitization for the value passed in. Carefully check and audit all values and code paths going\n * into this call. Make sure any user data is appropriately escaped for this security context.\n * For more detail, see the [Security Guide](https://g.co/ng/security).\n *\n * @publicApi\n */\n@Injectable({providedIn: 'root', useExisting: forwardRef(() => DomSanitizerImpl)})\nexport abstract class DomSanitizer implements Sanitizer {\n /**\n * Gets a safe value from either a known safe value or a value with unknown safety.\n *\n * If the given value is already a `SafeValue`, this method returns the unwrapped value.\n * If the security context is HTML and the given value is a plain string, this method\n * sanitizes the string, removing any potentially unsafe content.\n * For any other security context, this method throws an error if provided\n * with a plain string.\n */\n abstract sanitize(context: SecurityContext, value: SafeValue | string | null): string | null;\n\n /**\n * Bypass security and trust the given value to be safe HTML. Only use this when the bound HTML\n * is unsafe (e.g. contains `<script>` tags) and the code should be executed. The sanitizer will\n * leave safe HTML intact, so in most situations this method should not be used.\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n */\n abstract bypassSecurityTrustHtml(value: string): SafeHtml;\n\n /**\n * Bypass security and trust the given value to be safe style value (CSS).\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n */\n abstract bypassSecurityTrustStyle(value: string): SafeStyle;\n\n /**\n * Bypass security and trust the given value to be safe JavaScript.\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n */\n abstract bypassSecurityTrustScript(value: string): SafeScript;\n\n /**\n * Bypass security and trust the given value to be a safe style URL, i.e. a value that can be used\n * in hyperlinks or `<img src>`.\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n */\n abstract bypassSecurityTrustUrl(value: string): SafeUrl;\n\n /**\n * Bypass security and trust the given value to be a safe resource URL, i.e. a location that may\n * be used to load executable code from, like `<script src>`, or `<iframe src>`.\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n */\n abstract bypassSecurityTrustResourceUrl(value: string): SafeResourceUrl;\n}\n\n@Injectable({providedIn: 'root'})\nexport class DomSanitizerImpl extends DomSanitizer {\n constructor(@Inject(DOCUMENT) private _doc: any) {\n super();\n }\n\n override sanitize(ctx: SecurityContext, value: SafeValue | string | null): string | null {\n if (value == null) return null;\n switch (ctx) {\n case SecurityContext.NONE:\n return value as string;\n case SecurityContext.HTML:\n if (allowSanitizationBypassOrThrow(value, BypassType.Html)) {\n return unwrapSafeValue(value);\n }\n return _sanitizeHtml(this._doc, String(value)).toString();\n case SecurityContext.STYLE:\n if (allowSanitizationBypassOrThrow(value, BypassType.Style)) {\n return unwrapSafeValue(value);\n }\n return value as string;\n case SecurityContext.SCRIPT:\n if (allowSanitizationBypassOrThrow(value, BypassType.Script)) {\n return unwrapSafeValue(value);\n }\n throw new RuntimeError(\n RuntimeErrorCode.SANITIZATION_UNSAFE_SCRIPT,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n 'unsafe value used in a script context',\n );\n case SecurityContext.URL:\n if (allowSanitizationBypassOrThrow(value, BypassType.Url)) {\n return unwrapSafeValue(value);\n }\n return _sanitizeUrl(String(value));\n case SecurityContext.RESOURCE_URL:\n if (allowSanitizationBypassOrThrow(value, BypassType.ResourceUrl)) {\n return unwrapSafeValue(value);\n }\n throw new RuntimeError(\n RuntimeErrorCode.SANITIZATION_UNSAFE_RESOURCE_URL,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `unsafe value used in a resource URL context (see ${XSS_SECURITY_URL})`,\n );\n default:\n throw new RuntimeError(\n RuntimeErrorCode.SANITIZATION_UNEXPECTED_CTX,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `Unexpected SecurityContext ${ctx} (see ${XSS_SECURITY_URL})`,\n );\n }\n }\n\n override bypassSecurityTrustHtml(value: string): SafeHtml {\n return bypassSanitizationTrustHtml(value);\n }\n override bypassSecurityTrustStyle(value: string): SafeStyle {\n return bypassSanitizationTrustStyle(value);\n }\n override bypassSecurityTrustScript(value: string): SafeScript {\n return bypassSanitizationTrustScript(value);\n }\n override bypassSecurityTrustUrl(value: string): SafeUrl {\n return bypassSanitizationTrustUrl(value);\n }\n override bypassSecurityTrustResourceUrl(value: string): SafeResourceUrl {\n return bypassSanitizationTrustResourceUrl(value);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {HttpTransferCacheOptions, ɵwithHttpTransferCache} from '@angular/common/http';\nimport {\n ENVIRONMENT_INITIALIZER,\n EnvironmentProviders,\n inject,\n makeEnvironmentProviders,\n NgZone,\n Provider,\n ɵConsole as Console,\n ɵRuntimeError as RuntimeError,\n ɵformatRuntimeError as formatRuntimeError,\n ɵwithDomHydration as withDomHydration,\n ɵwithEventReplay,\n ɵwithI18nSupport,\n ɵZONELESS_ENABLED as ZONELESS_ENABLED,\n ɵwithIncrementalHydration,\n ɵIS_ENABLED_BLOCKING_INITIAL_NAVIGATION as IS_ENABLED_BLOCKING_INITIAL_NAVIGATION,\n} from '@angular/core';\nimport {RuntimeErrorCode} from './errors';\n\n/**\n * The list of features as an enum to uniquely type each `HydrationFeature`.\n * @see {@link HydrationFeature}\n *\n * @publicApi\n */\nexport enum HydrationFeatureKind {\n NoHttpTransferCache,\n HttpTransferCacheOptions,\n I18nSupport,\n EventReplay,\n IncrementalHydration,\n}\n\n/**\n * Helper type to represent a Hydration feature.\n *\n * @publicApi\n */\nexport interface HydrationFeature<FeatureKind extends HydrationFeatureKind> {\n ɵkind: FeatureKind;\n ɵproviders: Provider[];\n}\n\n/**\n * Helper function to create an object that represents a Hydration feature.\n */\nfunction hydrationFeature<FeatureKind extends HydrationFeatureKind>(\n ɵkind: FeatureKind,\n ɵproviders: Provider[] = [],\n ɵoptions: unknown = {},\n): HydrationFeature<FeatureKind> {\n return {ɵkind, ɵproviders};\n}\n\n/**\n * Disables HTTP transfer cache. Effectively causes HTTP requests to be performed twice: once on the\n * server and other one on the browser.\n *\n * @publicApi\n */\nexport function withNoHttpTransferCache(): HydrationFeature<HydrationFeatureKind.NoHttpTransferCache> {\n // This feature has no providers and acts as a flag that turns off\n // HTTP transfer cache (which otherwise is turned on by default).\n return hydrationFeature(HydrationFeatureKind.NoHttpTransferCache);\n}\n\n/**\n * The function accepts an object, which allows to configure cache parameters,\n * such as which headers should be included (no headers are included by default),\n * whether POST requests should be cached or a callback function to determine if a\n * particular request should be cached.\n *\n * @publicApi\n */\nexport function withHttpTransferCacheOptions(\n options: HttpTransferCacheOptions,\n): HydrationFeature<HydrationFeatureKind.HttpTransferCacheOptions> {\n // This feature has no providers and acts as a flag to pass options to the HTTP transfer cache.\n return hydrationFeature(\n HydrationFeatureKind.HttpTransferCacheOptions,\n ɵwithHttpTransferCache(options),\n );\n}\n\n/**\n * Enables support for hydrating i18n blocks.\n *\n * @publicApi 20.0\n */\nexport function withI18nSupport(): HydrationFeature<HydrationFeatureKind.I18nSupport> {\n return hydrationFeature(HydrationFeatureKind.I18nSupport, ɵwithI18nSupport());\n}\n\n/**\n * Enables support for replaying user events (e.g. `click`s) that happened on a page\n * before hydration logic has completed. Once an application is hydrated, all captured\n * events are replayed and relevant event listeners are executed.\n *\n * @usageNotes\n *\n * Basic example of how you can enable event replay in your application when\n * `bootstrapApplication` function is used:\n * ```ts\n * bootstrapApplication(AppComponent, {\n * providers: [provideClientHydration(withEventReplay())]\n * });\n * ```\n * @publicApi\n * @see {@link provideClientHydration}\n */\nexport function withEventReplay(): HydrationFeature<HydrationFeatureKind.EventReplay> {\n return hydrationFeature(HydrationFeatureKind.EventReplay, ɵwithEventReplay());\n}\n\n/**\n * Enables support for incremental hydration using the `hydrate` trigger syntax.\n *\n * @usageNotes\n *\n * Basic example of how you can enable incremental hydration in your application when\n * the `bootstrapApplication` function is used:\n * ```ts\n * bootstrapApplication(AppComponent, {\n * providers: [provideClientHydration(withIncrementalHydration())]\n * });\n * ```\n * @publicApi 20.0\n * @see {@link provideClientHydration}\n */\nexport function withIncrementalHydration(): HydrationFeature<HydrationFeatureKind.IncrementalHydration> {\n return hydrationFeature(HydrationFeatureKind.IncrementalHydration, ɵwithIncrementalHydration());\n}\n\n/**\n * Returns an `ENVIRONMENT_INITIALIZER` token setup with a function\n * that verifies whether compatible ZoneJS was used in an application\n * and logs a warning in a console if it's not the case.\n */\nfunction provideZoneJsCompatibilityDetector(): Provider[] {\n return [\n {\n provide: ENVIRONMENT_INITIALIZER,\n useValue: () => {\n const ngZone = inject(NgZone);\n const isZoneless = inject(ZONELESS_ENABLED);\n // Checking `ngZone instanceof NgZone` would be insufficient here,\n // because custom implementations might use NgZone as a base class.\n if (!isZoneless && ngZone.constructor !== NgZone) {\n const console = inject(Console);\n const message = formatRuntimeError(\n RuntimeErrorCode.UNSUPPORTED_ZONEJS_INSTANCE,\n 'Angular detected that hydration was enabled for an application ' +\n 'that uses a custom or a noop Zone.js implementation. ' +\n 'This is not yet a fully supported configuration.',\n );\n console.warn(message);\n }\n },\n multi: true,\n },\n ];\n}\n\n/**\n * Returns an `ENVIRONMENT_INITIALIZER` token setup with a function\n * that verifies whether enabledBlocking initial navigation is used in an application\n * and logs a warning in a console if it's not compatible with hydration.\n */\nfunction provideEnabledBlockingInitialNavigationDetector(): Provider[] {\n return [\n {\n provide: ENVIRONMENT_INITIALIZER,\n useValue: () => {\n const isEnabledBlockingInitialNavigation = inject(IS_ENABLED_BLOCKING_INITIAL_NAVIGATION, {\n optional: true,\n });\n\n if (isEnabledBlockingInitialNavigation) {\n const console = inject(Console);\n const message = formatRuntimeError(\n RuntimeErrorCode.HYDRATION_CONFLICTING_FEATURES,\n 'Configuration error: found both hydration and enabledBlocking initial navigation ' +\n 'in the same application, which is a contradiction.',\n );\n console.warn(message);\n }\n },\n multi: true,\n },\n ];\n}\n\n/**\n * Sets up providers necessary to enable hydration functionality for the application.\n *\n * By default, the function enables the recommended set of features for the optimal\n * performance for most of the applications. It includes the following features:\n *\n * * Reconciling DOM hydration. Learn more about it [here](guide/hydration).\n * * [`HttpClient`](api/common/http/HttpClient) response caching while running on the server and\n * transferring this cache to the client to avoid extra HTTP requests. Learn more about data caching\n * [here](guide/ssr#caching-data-when-using-httpclient).\n *\n * These functions allow you to disable some of the default features or enable new ones:\n *\n * * {@link withNoHttpTransferCache} to disable HTTP transfer cache\n * * {@link withHttpTransferCacheOptions} to configure some HTTP transfer cache options\n * * {@link withI18nSupport} to enable hydration support for i18n blocks\n * * {@link withEventReplay} to enable support for replaying user events\n *\n * @usageNotes\n *\n * Basic example of how you can enable hydration in your application when\n * `bootstrapApplication` function is used:\n * ```ts\n * bootstrapApplication(AppComponent, {\n * providers: [provideClientHydration()]\n * });\n * ```\n *\n * Alternatively if you are using NgModules, you would add `provideClientHydration`\n * to your root app module's provider list.\n * ```ts\n * @NgModule({\n * declarations: [RootCmp],\n * bootstrap: [RootCmp],\n * providers: [provideClientHydration()],\n * })\n * export class AppModule {}\n * ```\n *\n * @see {@link withNoHttpTransferCache}\n * @see {@link withHttpTransferCacheOptions}\n * @see {@link withI18nSupport}\n * @see {@link withEventReplay}\n *\n * @param features Optional features to configure additional hydration behaviors.\n * @returns A set of providers to enable hydration.\n *\n * @publicApi 17.0\n */\nexport function provideClientHydration(\n ...features: HydrationFeature<HydrationFeatureKind>[]\n): EnvironmentProviders {\n const providers: Provider[] = [];\n const featuresKind = new Set<HydrationFeatureKind>();\n\n for (const {ɵproviders, ɵkind} of features) {\n featuresKind.add(ɵkind);\n\n if (ɵproviders.length) {\n providers.push(ɵproviders);\n }\n }\n\n const hasHttpTransferCacheOptions = featuresKind.has(\n HydrationFeatureKind.HttpTransferCacheOptions,\n );\n\n if (\n typeof ngDevMode !== 'undefined' &&\n ngDevMode &&\n featuresKind.has(HydrationFeatureKind.NoHttpTransferCache) &&\n hasHttpTransferCacheOptions\n ) {\n throw new RuntimeError(\n RuntimeErrorCode.HYDRATION_CONFLICTING_FEATURES,\n 'Configuration error: found both withHttpTransferCacheOptions() and withNoHttpTransferCache() in the same call to provideClientHydration(), which is a contradiction.',\n );\n }\n\n return makeEnvironmentProviders([\n typeof ngDevMode !== 'undefined' && ngDevMode ? provideZoneJsCompatibilityDetector() : [],\n typeof ngDevMode !== 'undefined' && ngDevMode\n ? provideEnabledBlockingInitialNavigationDetector()\n : [],\n withDomHydration(),\n featuresKind.has(HydrationFeatureKind.NoHttpTransferCache) || hasHttpTransferCacheOptions\n ? []\n : ɵwithHttpTransferCache({}),\n providers,\n ]);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the platform-browser package.\n */\n\nimport {Version} from '@angular/core';\n\n/**\n * @publicApi\n */\nexport const VERSION = new Version('20.2.0-next.6');\n"],"names":["getDOM","global","Console","allowSanitizationBypassOrThrow","unwrapSafeValue","_sanitizeHtml","RuntimeError","_sanitizeUrl","XSS_SECURITY_URL","bypassSanitizationTrustHtml","bypassSanitizationTrustStyle","bypassSanitizationTrustScript","bypassSanitizationTrustUrl","bypassSanitizationTrustResourceUrl","ɵwithHttpTransferCache","ɵwithI18nSupport","ɵwithEventReplay","ɵwithIncrementalHydration","ZONELESS_ENABLED","formatRuntimeError","IS_ENABLED_BLOCKING_INITIAL_NAVIGATION","withDomHydration"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"platform-browser.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/browser/meta.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/browser/title.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/dom/util.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/browser/tools/common_tools.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/browser/tools/tools.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/dom/debug/by.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/dom/events/hammer_gestures.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/security/dom_sanitization_service.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/hydration.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/packages/platform-browser/src/version.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {DOCUMENT, ɵDomAdapter as DomAdapter, ɵgetDOM as getDOM} from '@angular/common';\nimport {Inject, Injectable} from '@angular/core';\n\n/**\n * Represents the attributes of an HTML `<meta>` element. The element itself is\n * represented by the internal `HTMLMetaElement`.\n *\n * @see [HTML meta tag](https://developer.mozilla.org/docs/Web/HTML/Element/meta)\n * @see {@link Meta}\n *\n * @publicApi\n */\nexport type MetaDefinition = {\n charset?: string;\n content?: string;\n httpEquiv?: string;\n id?: string;\n itemprop?: string;\n name?: string;\n property?: string;\n scheme?: string;\n url?: string;\n} & {\n // TODO(IgorMinar): this type looks wrong\n [prop: string]: string;\n};\n\n/**\n * A service for managing HTML `<meta>` tags.\n *\n * Properties of the `MetaDefinition` object match the attributes of the\n * HTML `<meta>` tag. These tags define document metadata that is important for\n * things like configuring a Content Security Policy, defining browser compatibility\n * and security settings, setting HTTP Headers, defining rich content for social sharing,\n * and Search Engine Optimization (SEO).\n *\n * To identify specific `<meta>` tags in a document, use an attribute selection\n * string in the format `\"tag_attribute='value string'\"`.\n * For example, an `attrSelector` value of `\"name='description'\"` matches a tag\n * whose `name` attribute has the value `\"description\"`.\n * Selectors are used with the `querySelector()` Document method,\n * in the format `meta[{attrSelector}]`.\n *\n * @see [HTML meta tag](https://developer.mozilla.org/docs/Web/HTML/Element/meta)\n * @see [Document.querySelector()](https://developer.mozilla.org/docs/Web/API/Document/querySelector)\n *\n *\n * @publicApi\n */\n@Injectable({providedIn: 'root'})\nexport class Meta {\n private _dom: DomAdapter;\n constructor(@Inject(DOCUMENT) private _doc: any) {\n this._dom = getDOM();\n }\n /**\n * Retrieves or creates a specific `<meta>` tag element in the current HTML document.\n * In searching for an existing tag, Angular attempts to match the `name` or `property` attribute\n * values in the provided tag definition, and verifies that all other attribute values are equal.\n * If an existing element is found, it is returned and is not modified in any way.\n * @param tag The definition of a `<meta>` element to match or create.\n * @param forceCreation True to create a new element without checking whether one already exists.\n * @returns The existing element with the same attributes and values if found,\n * the new element if no match is found, or `null` if the tag parameter is not defined.\n */\n addTag(tag: MetaDefinition, forceCreation: boolean = false): HTMLMetaElement | null {\n if (!tag) return null;\n return this._getOrCreateElement(tag, forceCreation);\n }\n\n /**\n * Retrieves or creates a set of `<meta>` tag elements in the current HTML document.\n * In searching for an existing tag, Angular attempts to match the `name` or `property` attribute\n * values in the provided tag definition, and verifies that all other attribute values are equal.\n * @param tags An array of tag definitions to match or create.\n * @param forceCreation True to create new elements without checking whether they already exist.\n * @returns The matching elements if found, or the new elements.\n */\n addTags(tags: MetaDefinition[], forceCreation: boolean = false): HTMLMetaElement[] {\n if (!tags) return [];\n return tags.reduce((result: HTMLMetaElement[], tag: MetaDefinition) => {\n if (tag) {\n result.push(this._getOrCreateElement(tag, forceCreation));\n }\n return result;\n }, []);\n }\n\n /**\n * Retrieves a `<meta>` tag element in the current HTML document.\n * @param attrSelector The tag attribute and value to match against, in the format\n * `\"tag_attribute='value string'\"`.\n * @returns The matching element, if any.\n */\n getTag(attrSelector: string): HTMLMetaElement | null {\n if (!attrSelector) return null;\n return this._doc.querySelector(`meta[${attrSelector}]`) || null;\n }\n\n /**\n * Retrieves a set of `<meta>` tag elements in the current HTML document.\n * @param attrSelector The tag attribute and value to match against, in the format\n * `\"tag_attribute='value string'\"`.\n * @returns The matching elements, if any.\n */\n getTags(attrSelector: string): HTMLMetaElement[] {\n if (!attrSelector) return [];\n const list /*NodeList*/ = this._doc.querySelectorAll(`meta[${attrSelector}]`);\n return list ? [].slice.call(list) : [];\n }\n\n /**\n * Modifies an existing `<meta>` tag element in the current HTML document.\n * @param tag The tag description with which to replace the existing tag content.\n * @param selector A tag attribute and value to match against, to identify\n * an existing tag. A string in the format `\"tag_attribute=`value string`\"`.\n * If not supplied, matches a tag with the same `name` or `property` attribute value as the\n * replacement tag.\n * @return The modified element.\n */\n updateTag(tag: MetaDefinition, selector?: string): HTMLMetaElement | null {\n if (!tag) return null;\n selector = selector || this._parseSelector(tag);\n const meta: HTMLMetaElement = this.getTag(selector)!;\n if (meta) {\n return this._setMetaElementAttributes(tag, meta);\n }\n return this._getOrCreateElement(tag, true);\n }\n\n /**\n * Removes an existing `<meta>` tag element from the current HTML document.\n * @param attrSelector A tag attribute and value to match against, to identify\n * an existing tag. A string in the format `\"tag_attribute=`value string`\"`.\n */\n removeTag(attrSelector: string): void {\n this.removeTagElement(this.getTag(attrSelector)!);\n }\n\n /**\n * Removes an existing `<meta>` tag element from the current HTML document.\n * @param meta The tag definition to match against to identify an existing tag.\n */\n removeTagElement(meta: HTMLMetaElement): void {\n if (meta) {\n this._dom.remove(meta);\n }\n }\n\n private _getOrCreateElement(\n meta: MetaDefinition,\n forceCreation: boolean = false,\n ): HTMLMetaElement {\n if (!forceCreation) {\n const selector: string = this._parseSelector(meta);\n // It's allowed to have multiple elements with the same name so it's not enough to\n // just check that element with the same name already present on the page. We also need to\n // check if element has tag attributes\n const elem = this.getTags(selector).filter((elem) => this._containsAttributes(meta, elem))[0];\n if (elem !== undefined) return elem;\n }\n const element: HTMLMetaElement = this._dom.createElement('meta') as HTMLMetaElement;\n this._setMetaElementAttributes(meta, element);\n const head = this._doc.getElementsByTagName('head')[0];\n head.appendChild(element);\n return element;\n }\n\n private _setMetaElementAttributes(tag: MetaDefinition, el: HTMLMetaElement): HTMLMetaElement {\n Object.keys(tag).forEach((prop: string) =>\n el.setAttribute(this._getMetaKeyMap(prop), tag[prop]),\n );\n return el;\n }\n\n private _parseSelector(tag: MetaDefinition): string {\n const attr: string = tag.name ? 'name' : 'property';\n return `${attr}=\"${tag[attr]}\"`;\n }\n\n private _containsAttributes(tag: MetaDefinition, elem: HTMLMetaElement): boolean {\n return Object.keys(tag).every(\n (key: string) => elem.getAttribute(this._getMetaKeyMap(key)) === tag[key],\n );\n }\n\n private _getMetaKeyMap(prop: string): string {\n return META_KEYS_MAP[prop] || prop;\n }\n}\n\n/**\n * Mapping for MetaDefinition properties with their correct meta attribute names\n */\nconst META_KEYS_MAP: {[prop: string]: string} = {\n httpEquiv: 'http-equiv',\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable} from '@angular/core';\n\n/**\n * A service that can be used to get and set the title of a current HTML document.\n *\n * Since an Angular application can't be bootstrapped on the entire HTML document (`<html>` tag)\n * it is not possible to bind to the `text` property of the `HTMLTitleElement` elements\n * (representing the `<title>` tag). Instead, this service can be used to set and get the current\n * title value.\n *\n * @publicApi\n */\n@Injectable({providedIn: 'root'})\nexport class Title {\n constructor(@Inject(DOCUMENT) private _doc: any) {}\n /**\n * Get the title of the current HTML document.\n */\n getTitle(): string {\n return this._doc.title;\n }\n\n /**\n * Set the title of the current HTML document.\n * @param newTitle\n */\n setTitle(newTitle: string) {\n this._doc.title = newTitle || '';\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n/// <reference path=\"../../../goog.d.ts\" />\n\nimport {ɵglobal as global} from '@angular/core';\n\n/**\n * Exports the value under a given `name` in the global property `ng`. For example `ng.probe` if\n * `name` is `'probe'`.\n * @param name Name under which it will be exported. Keep in mind this will be a property of the\n * global `ng` object.\n * @param value The value to export.\n */\nexport function exportNgVar(name: string, value: any): void {\n if (typeof COMPILED === 'undefined' || !COMPILED) {\n // Note: we can't export `ng` when using closure enhanced optimization as:\n // - closure declares globals itself for minified names, which sometimes clobber our `ng` global\n // - we can't declare a closure extern as the namespace `ng` is already used within Google\n // for typings for angularJS (via `goog.provide('ng....')`).\n const ng = (global['ng'] = (global['ng'] as {[key: string]: any} | undefined) || {});\n ng[name] = value;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ApplicationRef, ComponentRef} from '@angular/core';\n\nexport class ChangeDetectionPerfRecord {\n constructor(\n public msPerTick: number,\n public numTicks: number,\n ) {}\n}\n\n/**\n * Entry point for all Angular profiling-related debug tools. This object\n * corresponds to the `ng.profiler` in the dev console.\n */\nexport class AngularProfiler {\n appRef: ApplicationRef;\n\n constructor(ref: ComponentRef<any>) {\n this.appRef = ref.injector.get(ApplicationRef);\n }\n\n // tslint:disable:no-console\n /**\n * Exercises change detection in a loop and then prints the average amount of\n * time in milliseconds how long a single round of change detection takes for\n * the current state of the UI. It runs a minimum of 5 rounds for a minimum\n * of 500 milliseconds.\n *\n * Optionally, a user may pass a `config` parameter containing a map of\n * options. Supported options are:\n *\n * `record` (boolean) - causes the profiler to record a CPU profile while\n * it exercises the change detector. Example:\n *\n * ```ts\n * ng.profiler.timeChangeDetection({record: true})\n * ```\n */\n timeChangeDetection(config: any): ChangeDetectionPerfRecord {\n const record = config && config['record'];\n const profileName = 'Change Detection';\n // Profiler is not available in Android browsers without dev tools opened\n if (record && 'profile' in console && typeof console.profile === 'function') {\n console.profile(profileName);\n }\n const start = performance.now();\n let numTicks = 0;\n while (numTicks < 5 || performance.now() - start < 500) {\n this.appRef.tick();\n numTicks++;\n }\n const end = performance.now();\n if (record && 'profileEnd' in console && typeof console.profileEnd === 'function') {\n console.profileEnd(profileName);\n }\n const msPerTick = (end - start) / numTicks;\n console.log(`ran ${numTicks} change detection cycles`);\n console.log(`${msPerTick.toFixed(2)} ms per check`);\n\n return new ChangeDetectionPerfRecord(msPerTick, numTicks);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ComponentRef} from '@angular/core';\n\nimport {exportNgVar} from '../../dom/util';\n\nimport {AngularProfiler} from './common_tools';\n\nconst PROFILER_GLOBAL_NAME = 'profiler';\n\n/**\n * Enabled Angular debug tools that are accessible via your browser's\n * developer console.\n *\n * Usage:\n *\n * 1. Open developer console (e.g. in Chrome Ctrl + Shift + j)\n * 1. Type `ng.` (usually the console will show auto-complete suggestion)\n * 1. Try the change detection profiler `ng.profiler.timeChangeDetection()`\n * then hit Enter.\n *\n * @publicApi\n */\nexport function enableDebugTools<T>(ref: ComponentRef<T>): ComponentRef<T> {\n exportNgVar(PROFILER_GLOBAL_NAME, new AngularProfiler(ref));\n return ref;\n}\n\n/**\n * Disables Angular tools.\n *\n * @publicApi\n */\nexport function disableDebugTools(): void {\n exportNgVar(PROFILER_GLOBAL_NAME, null);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ɵgetDOM as getDOM} from '@angular/common';\nimport {DebugElement, DebugNode, Predicate, Type} from '@angular/core';\n\n/**\n * Predicates for use with {@link DebugElement}'s query functions.\n *\n * @publicApi\n */\nexport class By {\n /**\n * Match all nodes.\n *\n * @usageNotes\n * ### Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_all'}\n */\n static all(): Predicate<DebugNode> {\n return () => true;\n }\n\n /**\n * Match elements by the given CSS selector.\n *\n * @usageNotes\n * ### Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_css'}\n */\n static css(selector: string): Predicate<DebugElement> {\n return (debugElement) => {\n return debugElement.nativeElement != null\n ? elementMatches(debugElement.nativeElement, selector)\n : false;\n };\n }\n\n /**\n * Match nodes that have the given directive present.\n *\n * @usageNotes\n * ### Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_directive'}\n */\n static directive(type: Type<any>): Predicate<DebugNode> {\n return (debugNode) => debugNode.providerTokens!.indexOf(type) !== -1;\n }\n}\n\nfunction elementMatches(n: any, selector: string): boolean {\n if (getDOM().isElementNode(n)) {\n return (\n (n.matches && n.matches(selector)) ||\n (n.msMatchesSelector && n.msMatchesSelector(selector)) ||\n (n.webkitMatchesSelector && n.webkitMatchesSelector(selector))\n );\n }\n\n return false;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n/// <reference types=\"hammerjs\" />\n\nimport {DOCUMENT} from '@angular/common';\nimport {\n Inject,\n Injectable,\n InjectionToken,\n Injector,\n NgModule,\n Optional,\n ɵConsole as Console,\n} from '@angular/core';\n\nimport {EVENT_MANAGER_PLUGINS, EventManagerPlugin} from './event_manager';\n\n/**\n * Supported HammerJS recognizer event names.\n */\nconst EVENT_NAMES = {\n // pan\n 'pan': true,\n 'panstart': true,\n 'panmove': true,\n 'panend': true,\n 'pancancel': true,\n 'panleft': true,\n 'panright': true,\n 'panup': true,\n 'pandown': true,\n // pinch\n 'pinch': true,\n 'pinchstart': true,\n 'pinchmove': true,\n 'pinchend': true,\n 'pinchcancel': true,\n 'pinchin': true,\n 'pinchout': true,\n // press\n 'press': true,\n 'pressup': true,\n // rotate\n 'rotate': true,\n 'rotatestart': true,\n 'rotatemove': true,\n 'rotateend': true,\n 'rotatecancel': true,\n // swipe\n 'swipe': true,\n 'swipeleft': true,\n 'swiperight': true,\n 'swipeup': true,\n 'swipedown': true,\n // tap\n 'tap': true,\n 'doubletap': true,\n};\n\n/**\n * DI token for providing [HammerJS](https://hammerjs.github.io/) support to Angular.\n * @see {@link HammerGestureConfig}\n *\n * @ngModule HammerModule\n * @publicApi\n *\n * @deprecated The HammerJS integration is deprecated. Replace it by your own implementation.\n */\nexport const HAMMER_GESTURE_CONFIG = new InjectionToken<HammerGestureConfig>(\n typeof ngDevMode === 'undefined' || ngDevMode ? 'HammerGestureConfig' : '',\n);\n\n/**\n * Function that loads HammerJS, returning a promise that is resolved once HammerJs is loaded.\n *\n * @publicApi\n *\n * @deprecated The hammerjs integration is deprecated. Replace it by your own implementation.\n */\nexport type HammerLoader = () => Promise<void>;\n\n/**\n * Injection token used to provide a HammerLoader to Angular.\n *\n * @see {@link HammerLoader}\n *\n * @publicApi\n *\n * @deprecated The HammerJS integration is deprecated. Replace it by your own implementation.\n */\nexport const HAMMER_LOADER = new InjectionToken<HammerLoader>(\n typeof ngDevMode === 'undefined' || ngDevMode ? 'HammerLoader' : '',\n);\n\nexport interface HammerInstance {\n on(eventName: string, callback?: Function): void;\n off(eventName: string, callback?: Function): void;\n destroy?(): void;\n}\n\n/**\n * An injectable [HammerJS Manager](https://hammerjs.github.io/api/#hammermanager)\n * for gesture recognition. Configures specific event recognition.\n * @publicApi\n *\n * @deprecated The HammerJS integration is deprecated. Replace it by your own implementation.\n */\n@Injectable()\nexport class HammerGestureConfig {\n /**\n * A set of supported event names for gestures to be used in Angular.\n * Angular supports all built-in recognizers, as listed in\n * [HammerJS documentation](https://hammerjs.github.io/).\n */\n events: string[] = [];\n\n /**\n * Maps gesture event names to a set of configuration options\n * that specify overrides to the default values for specific properties.\n *\n * The key is a supported event name to be configured,\n * and the options object contains a set of properties, with override values\n * to be applied to the named recognizer event.\n * For example, to disable recognition of the rotate event, specify\n * `{\"rotate\": {\"enable\": false}}`.\n *\n * Properties that are not present take the HammerJS default values.\n * For information about which properties are supported for which events,\n * and their allowed and default values, see\n * [HammerJS documentation](https://hammerjs.github.io/).\n *\n */\n overrides: {[key: string]: Object} = {};\n\n /**\n * Properties whose default values can be overridden for a given event.\n * Different sets of properties apply to different events.\n * For information about which properties are supported for which events,\n * and their allowed and default values, see\n * [HammerJS documentation](https://hammerjs.github.io/).\n */\n options?: {\n cssProps?: any;\n domEvents?: boolean;\n enable?: boolean | ((manager: any) => boolean);\n preset?: any[];\n touchAction?: string;\n recognizers?: any[];\n inputClass?: any;\n inputTarget?: EventTarget;\n };\n\n /**\n * Creates a [HammerJS Manager](https://hammerjs.github.io/api/#hammermanager)\n * and attaches it to a given HTML element.\n * @param element The element that will recognize gestures.\n * @returns A HammerJS event-manager object.\n */\n buildHammer(element: HTMLElement): HammerInstance {\n const mc = new Hammer!(element, this.options);\n\n mc.get('pinch').set({enable: true});\n mc.get('rotate').set({enable: true});\n\n for (const eventName in this.overrides) {\n mc.get(eventName).set(this.overrides[eventName]);\n }\n\n return mc;\n }\n}\n\n/**\n * Event plugin that adds Hammer support to an application.\n *\n * @ngModule HammerModule\n */\n@Injectable()\nexport class HammerGesturesPlugin extends EventManagerPlugin {\n private _loaderPromise: Promise<void> | null = null;\n\n constructor(\n @Inject(DOCUMENT) doc: any,\n @Inject(HAMMER_GESTURE_CONFIG) private _config: HammerGestureConfig,\n private _injector: Injector,\n @Optional() @Inject(HAMMER_LOADER) private loader?: HammerLoader | null,\n ) {\n super(doc);\n }\n\n override supports(eventName: string): boolean {\n if (!EVENT_NAMES.hasOwnProperty(eventName.toLowerCase()) && !this.isCustomEvent(eventName)) {\n return false;\n }\n\n if (!(window as any).Hammer && !this.loader) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Get a `Console` through an injector to tree-shake the\n // class when it is unused in production.\n const _console = this._injector.get(Console);\n _console.warn(\n `The \"${eventName}\" event cannot be bound because Hammer.JS is not ` +\n `loaded and no custom loader has been specified.`,\n );\n }\n return false;\n }\n\n return true;\n }\n\n override addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {\n const zone = this.manager.getZone();\n eventName = eventName.toLowerCase();\n\n // If Hammer is not present but a loader is specified, we defer adding the event listener\n // until Hammer is loaded.\n if (!(window as any).Hammer && this.loader) {\n this._loaderPromise = this._loaderPromise || zone.runOutsideAngular(() => this.loader!());\n // This `addEventListener` method returns a function to remove the added listener.\n // Until Hammer is loaded, the returned function needs to *cancel* the registration rather\n // than remove anything.\n let cancelRegistration = false;\n let deregister: Function = () => {\n cancelRegistration = true;\n };\n\n zone.runOutsideAngular(() =>\n this._loaderPromise!.then(() => {\n // If Hammer isn't actually loaded when the custom loader resolves, give up.\n if (!(window as any).Hammer) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const _console = this._injector.get(Console);\n _console.warn(`The custom HAMMER_LOADER completed, but Hammer.JS is not present.`);\n }\n deregister = () => {};\n return;\n }\n\n if (!cancelRegistration) {\n // Now that Hammer is loaded and the listener is being loaded for real,\n // the deregistration function changes from canceling registration to\n // removal.\n deregister = this.addEventListener(element, eventName, handler);\n }\n }).catch(() => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const _console = this._injector.get(Console);\n _console.warn(\n `The \"${eventName}\" event cannot be bound because the custom ` +\n `Hammer.JS loader failed.`,\n );\n }\n deregister = () => {};\n }),\n );\n\n // Return a function that *executes* `deregister` (and not `deregister` itself) so that we\n // can change the behavior of `deregister` once the listener is added. Using a closure in\n // this way allows us to avoid any additional data structures to track listener removal.\n return () => {\n deregister();\n };\n }\n\n return zone.runOutsideAngular(() => {\n // Creating the manager bind events, must be done outside of angular\n const mc = this._config.buildHammer(element);\n const callback = function (eventObj: HammerInput) {\n zone.runGuarded(function () {\n handler(eventObj);\n });\n };\n mc.on(eventName, callback);\n return () => {\n mc.off(eventName, callback);\n // destroy mc to prevent memory leak\n if (typeof mc.destroy === 'function') {\n mc.destroy();\n }\n };\n });\n }\n\n isCustomEvent(eventName: string): boolean {\n return this._config.events.indexOf(eventName) > -1;\n }\n}\n\n/**\n * Adds support for HammerJS.\n *\n * Import this module at the root of your application so that Angular can work with\n * HammerJS to detect gesture events.\n *\n * Note that applications still need to include the HammerJS script itself. This module\n * simply sets up the coordination layer between HammerJS and Angular's `EventManager`.\n *\n * @publicApi\n *\n * @deprecated The hammer integration is deprecated. Replace it by your own implementation.\n */\n@NgModule({\n providers: [\n {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: HammerGesturesPlugin,\n multi: true,\n deps: [DOCUMENT, HAMMER_GESTURE_CONFIG, Injector, [new Optional(), HAMMER_LOADER]],\n },\n {provide: HAMMER_GESTURE_CONFIG, useClass: HammerGestureConfig},\n ],\n})\nexport class HammerModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {DOCUMENT} from '@angular/common';\nimport {\n forwardRef,\n Inject,\n Injectable,\n Sanitizer,\n SecurityContext,\n ɵ_sanitizeHtml as _sanitizeHtml,\n ɵ_sanitizeUrl as _sanitizeUrl,\n ɵallowSanitizationBypassAndThrow as allowSanitizationBypassOrThrow,\n ɵbypassSanitizationTrustHtml as bypassSanitizationTrustHtml,\n ɵbypassSanitizationTrustResourceUrl as bypassSanitizationTrustResourceUrl,\n ɵbypassSanitizationTrustScript as bypassSanitizationTrustScript,\n ɵbypassSanitizationTrustStyle as bypassSanitizationTrustStyle,\n ɵbypassSanitizationTrustUrl as bypassSanitizationTrustUrl,\n ɵBypassType as BypassType,\n ɵRuntimeError as RuntimeError,\n ɵunwrapSafeValue as unwrapSafeValue,\n ɵXSS_SECURITY_URL as XSS_SECURITY_URL,\n} from '@angular/core';\n\nimport {RuntimeErrorCode} from '../errors';\n\nexport {SecurityContext};\n\n/**\n * Marker interface for a value that's safe to use in a particular context.\n *\n * @publicApi\n */\nexport interface SafeValue {}\n\n/**\n * Marker interface for a value that's safe to use as HTML.\n *\n * @publicApi\n */\nexport interface SafeHtml extends SafeValue {}\n\n/**\n * Marker interface for a value that's safe to use as style (CSS).\n *\n * @publicApi\n */\nexport interface SafeStyle extends SafeValue {}\n\n/**\n * Marker interface for a value that's safe to use as JavaScript.\n *\n * @publicApi\n */\nexport interface SafeScript extends SafeValue {}\n\n/**\n * Marker interface for a value that's safe to use as a URL linking to a document.\n *\n * @publicApi\n */\nexport interface SafeUrl extends SafeValue {}\n\n/**\n * Marker interface for a value that's safe to use as a URL to load executable code from.\n *\n * @publicApi\n */\nexport interface SafeResourceUrl extends SafeValue {}\n\n/**\n * DomSanitizer helps preventing Cross Site Scripting Security bugs (XSS) by sanitizing\n * values to be safe to use in the different DOM contexts.\n *\n * For example, when binding a URL in an `<a [href]=\"someValue\">` hyperlink, `someValue` will be\n * sanitized so that an attacker cannot inject e.g. a `javascript:` URL that would execute code on\n * the website.\n *\n * In specific situations, it might be necessary to disable sanitization, for example if the\n * application genuinely needs to produce a `javascript:` style link with a dynamic value in it.\n * Users can bypass security by constructing a value with one of the `bypassSecurityTrust...`\n * methods, and then binding to that value from the template.\n *\n * These situations should be very rare, and extraordinary care must be taken to avoid creating a\n * Cross Site Scripting (XSS) security bug!\n *\n * When using `bypassSecurityTrust...`, make sure to call the method as early as possible and as\n * close as possible to the source of the value, to make it easy to verify no security bug is\n * created by its use.\n *\n * It is not required (and not recommended) to bypass security if the value is safe, e.g. a URL that\n * does not start with a suspicious protocol, or an HTML snippet that does not contain dangerous\n * code. The sanitizer leaves safe values intact.\n *\n * @security Calling any of the `bypassSecurityTrust...` APIs disables Angular's built-in\n * sanitization for the value passed in. Carefully check and audit all values and code paths going\n * into this call. Make sure any user data is appropriately escaped for this security context.\n * For more detail, see the [Security Guide](https://g.co/ng/security).\n *\n * @publicApi\n */\n@Injectable({providedIn: 'root', useExisting: forwardRef(() => DomSanitizerImpl)})\nexport abstract class DomSanitizer implements Sanitizer {\n /**\n * Gets a safe value from either a known safe value or a value with unknown safety.\n *\n * If the given value is already a `SafeValue`, this method returns the unwrapped value.\n * If the security context is HTML and the given value is a plain string, this method\n * sanitizes the string, removing any potentially unsafe content.\n * For any other security context, this method throws an error if provided\n * with a plain string.\n */\n abstract sanitize(context: SecurityContext, value: SafeValue | string | null): string | null;\n\n /**\n * Bypass security and trust the given value to be safe HTML. Only use this when the bound HTML\n * is unsafe (e.g. contains `<script>` tags) and the code should be executed. The sanitizer will\n * leave safe HTML intact, so in most situations this method should not be used.\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n */\n abstract bypassSecurityTrustHtml(value: string): SafeHtml;\n\n /**\n * Bypass security and trust the given value to be safe style value (CSS).\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n */\n abstract bypassSecurityTrustStyle(value: string): SafeStyle;\n\n /**\n * Bypass security and trust the given value to be safe JavaScript.\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n */\n abstract bypassSecurityTrustScript(value: string): SafeScript;\n\n /**\n * Bypass security and trust the given value to be a safe style URL, i.e. a value that can be used\n * in hyperlinks or `<img src>`.\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n */\n abstract bypassSecurityTrustUrl(value: string): SafeUrl;\n\n /**\n * Bypass security and trust the given value to be a safe resource URL, i.e. a location that may\n * be used to load executable code from, like `<script src>`, or `<iframe src>`.\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n */\n abstract bypassSecurityTrustResourceUrl(value: string): SafeResourceUrl;\n}\n\n@Injectable({providedIn: 'root'})\nexport class DomSanitizerImpl extends DomSanitizer {\n constructor(@Inject(DOCUMENT) private _doc: any) {\n super();\n }\n\n override sanitize(ctx: SecurityContext, value: SafeValue | string | null): string | null {\n if (value == null) return null;\n switch (ctx) {\n case SecurityContext.NONE:\n return value as string;\n case SecurityContext.HTML:\n if (allowSanitizationBypassOrThrow(value, BypassType.Html)) {\n return unwrapSafeValue(value);\n }\n return _sanitizeHtml(this._doc, String(value)).toString();\n case SecurityContext.STYLE:\n if (allowSanitizationBypassOrThrow(value, BypassType.Style)) {\n return unwrapSafeValue(value);\n }\n return value as string;\n case SecurityContext.SCRIPT:\n if (allowSanitizationBypassOrThrow(value, BypassType.Script)) {\n return unwrapSafeValue(value);\n }\n throw new RuntimeError(\n RuntimeErrorCode.SANITIZATION_UNSAFE_SCRIPT,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n 'unsafe value used in a script context',\n );\n case SecurityContext.URL:\n if (allowSanitizationBypassOrThrow(value, BypassType.Url)) {\n return unwrapSafeValue(value);\n }\n return _sanitizeUrl(String(value));\n case SecurityContext.RESOURCE_URL:\n if (allowSanitizationBypassOrThrow(value, BypassType.ResourceUrl)) {\n return unwrapSafeValue(value);\n }\n throw new RuntimeError(\n RuntimeErrorCode.SANITIZATION_UNSAFE_RESOURCE_URL,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `unsafe value used in a resource URL context (see ${XSS_SECURITY_URL})`,\n );\n default:\n throw new RuntimeError(\n RuntimeErrorCode.SANITIZATION_UNEXPECTED_CTX,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `Unexpected SecurityContext ${ctx} (see ${XSS_SECURITY_URL})`,\n );\n }\n }\n\n override bypassSecurityTrustHtml(value: string): SafeHtml {\n return bypassSanitizationTrustHtml(value);\n }\n override bypassSecurityTrustStyle(value: string): SafeStyle {\n return bypassSanitizationTrustStyle(value);\n }\n override bypassSecurityTrustScript(value: string): SafeScript {\n return bypassSanitizationTrustScript(value);\n }\n override bypassSecurityTrustUrl(value: string): SafeUrl {\n return bypassSanitizationTrustUrl(value);\n }\n override bypassSecurityTrustResourceUrl(value: string): SafeResourceUrl {\n return bypassSanitizationTrustResourceUrl(value);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {HttpTransferCacheOptions, ɵwithHttpTransferCache} from '@angular/common/http';\nimport {\n ENVIRONMENT_INITIALIZER,\n EnvironmentProviders,\n inject,\n makeEnvironmentProviders,\n NgZone,\n Provider,\n ɵConsole as Console,\n ɵRuntimeError as RuntimeError,\n ɵformatRuntimeError as formatRuntimeError,\n ɵwithDomHydration as withDomHydration,\n ɵwithEventReplay,\n ɵwithI18nSupport,\n ɵZONELESS_ENABLED as ZONELESS_ENABLED,\n ɵwithIncrementalHydration,\n ɵIS_ENABLED_BLOCKING_INITIAL_NAVIGATION as IS_ENABLED_BLOCKING_INITIAL_NAVIGATION,\n} from '@angular/core';\nimport {RuntimeErrorCode} from './errors';\n\n/**\n * The list of features as an enum to uniquely type each `HydrationFeature`.\n * @see {@link HydrationFeature}\n *\n * @publicApi\n */\nexport enum HydrationFeatureKind {\n NoHttpTransferCache,\n HttpTransferCacheOptions,\n I18nSupport,\n EventReplay,\n IncrementalHydration,\n}\n\n/**\n * Helper type to represent a Hydration feature.\n *\n * @publicApi\n */\nexport interface HydrationFeature<FeatureKind extends HydrationFeatureKind> {\n ɵkind: FeatureKind;\n ɵproviders: Provider[];\n}\n\n/**\n * Helper function to create an object that represents a Hydration feature.\n */\nfunction hydrationFeature<FeatureKind extends HydrationFeatureKind>(\n ɵkind: FeatureKind,\n ɵproviders: Provider[] = [],\n ɵoptions: unknown = {},\n): HydrationFeature<FeatureKind> {\n return {ɵkind, ɵproviders};\n}\n\n/**\n * Disables HTTP transfer cache. Effectively causes HTTP requests to be performed twice: once on the\n * server and other one on the browser.\n *\n * @publicApi\n */\nexport function withNoHttpTransferCache(): HydrationFeature<HydrationFeatureKind.NoHttpTransferCache> {\n // This feature has no providers and acts as a flag that turns off\n // HTTP transfer cache (which otherwise is turned on by default).\n return hydrationFeature(HydrationFeatureKind.NoHttpTransferCache);\n}\n\n/**\n * The function accepts an object, which allows to configure cache parameters,\n * such as which headers should be included (no headers are included by default),\n * whether POST requests should be cached or a callback function to determine if a\n * particular request should be cached.\n *\n * @publicApi\n */\nexport function withHttpTransferCacheOptions(\n options: HttpTransferCacheOptions,\n): HydrationFeature<HydrationFeatureKind.HttpTransferCacheOptions> {\n // This feature has no providers and acts as a flag to pass options to the HTTP transfer cache.\n return hydrationFeature(\n HydrationFeatureKind.HttpTransferCacheOptions,\n ɵwithHttpTransferCache(options),\n );\n}\n\n/**\n * Enables support for hydrating i18n blocks.\n *\n * @publicApi 20.0\n */\nexport function withI18nSupport(): HydrationFeature<HydrationFeatureKind.I18nSupport> {\n return hydrationFeature(HydrationFeatureKind.I18nSupport, ɵwithI18nSupport());\n}\n\n/**\n * Enables support for replaying user events (e.g. `click`s) that happened on a page\n * before hydration logic has completed. Once an application is hydrated, all captured\n * events are replayed and relevant event listeners are executed.\n *\n * @usageNotes\n *\n * Basic example of how you can enable event replay in your application when\n * `bootstrapApplication` function is used:\n * ```ts\n * bootstrapApplication(AppComponent, {\n * providers: [provideClientHydration(withEventReplay())]\n * });\n * ```\n * @publicApi\n * @see {@link provideClientHydration}\n */\nexport function withEventReplay(): HydrationFeature<HydrationFeatureKind.EventReplay> {\n return hydrationFeature(HydrationFeatureKind.EventReplay, ɵwithEventReplay());\n}\n\n/**\n * Enables support for incremental hydration using the `hydrate` trigger syntax.\n *\n * @usageNotes\n *\n * Basic example of how you can enable incremental hydration in your application when\n * the `bootstrapApplication` function is used:\n * ```ts\n * bootstrapApplication(AppComponent, {\n * providers: [provideClientHydration(withIncrementalHydration())]\n * });\n * ```\n * @publicApi 20.0\n * @see {@link provideClientHydration}\n */\nexport function withIncrementalHydration(): HydrationFeature<HydrationFeatureKind.IncrementalHydration> {\n return hydrationFeature(HydrationFeatureKind.IncrementalHydration, ɵwithIncrementalHydration());\n}\n\n/**\n * Returns an `ENVIRONMENT_INITIALIZER` token setup with a function\n * that verifies whether compatible ZoneJS was used in an application\n * and logs a warning in a console if it's not the case.\n */\nfunction provideZoneJsCompatibilityDetector(): Provider[] {\n return [\n {\n provide: ENVIRONMENT_INITIALIZER,\n useValue: () => {\n const ngZone = inject(NgZone);\n const isZoneless = inject(ZONELESS_ENABLED);\n // Checking `ngZone instanceof NgZone` would be insufficient here,\n // because custom implementations might use NgZone as a base class.\n if (!isZoneless && ngZone.constructor !== NgZone) {\n const console = inject(Console);\n const message = formatRuntimeError(\n RuntimeErrorCode.UNSUPPORTED_ZONEJS_INSTANCE,\n 'Angular detected that hydration was enabled for an application ' +\n 'that uses a custom or a noop Zone.js implementation. ' +\n 'This is not yet a fully supported configuration.',\n );\n console.warn(message);\n }\n },\n multi: true,\n },\n ];\n}\n\n/**\n * Returns an `ENVIRONMENT_INITIALIZER` token setup with a function\n * that verifies whether enabledBlocking initial navigation is used in an application\n * and logs a warning in a console if it's not compatible with hydration.\n */\nfunction provideEnabledBlockingInitialNavigationDetector(): Provider[] {\n return [\n {\n provide: ENVIRONMENT_INITIALIZER,\n useValue: () => {\n const isEnabledBlockingInitialNavigation = inject(IS_ENABLED_BLOCKING_INITIAL_NAVIGATION, {\n optional: true,\n });\n\n if (isEnabledBlockingInitialNavigation) {\n const console = inject(Console);\n const message = formatRuntimeError(\n RuntimeErrorCode.HYDRATION_CONFLICTING_FEATURES,\n 'Configuration error: found both hydration and enabledBlocking initial navigation ' +\n 'in the same application, which is a contradiction.',\n );\n console.warn(message);\n }\n },\n multi: true,\n },\n ];\n}\n\n/**\n * Sets up providers necessary to enable hydration functionality for the application.\n *\n * By default, the function enables the recommended set of features for the optimal\n * performance for most of the applications. It includes the following features:\n *\n * * Reconciling DOM hydration. Learn more about it [here](guide/hydration).\n * * [`HttpClient`](api/common/http/HttpClient) response caching while running on the server and\n * transferring this cache to the client to avoid extra HTTP requests. Learn more about data caching\n * [here](guide/ssr#caching-data-when-using-httpclient).\n *\n * These functions allow you to disable some of the default features or enable new ones:\n *\n * * {@link withNoHttpTransferCache} to disable HTTP transfer cache\n * * {@link withHttpTransferCacheOptions} to configure some HTTP transfer cache options\n * * {@link withI18nSupport} to enable hydration support for i18n blocks\n * * {@link withEventReplay} to enable support for replaying user events\n *\n * @usageNotes\n *\n * Basic example of how you can enable hydration in your application when\n * `bootstrapApplication` function is used:\n * ```ts\n * bootstrapApplication(AppComponent, {\n * providers: [provideClientHydration()]\n * });\n * ```\n *\n * Alternatively if you are using NgModules, you would add `provideClientHydration`\n * to your root app module's provider list.\n * ```ts\n * @NgModule({\n * declarations: [RootCmp],\n * bootstrap: [RootCmp],\n * providers: [provideClientHydration()],\n * })\n * export class AppModule {}\n * ```\n *\n * @see {@link withNoHttpTransferCache}\n * @see {@link withHttpTransferCacheOptions}\n * @see {@link withI18nSupport}\n * @see {@link withEventReplay}\n *\n * @param features Optional features to configure additional hydration behaviors.\n * @returns A set of providers to enable hydration.\n *\n * @publicApi 17.0\n */\nexport function provideClientHydration(\n ...features: HydrationFeature<HydrationFeatureKind>[]\n): EnvironmentProviders {\n const providers: Provider[] = [];\n const featuresKind = new Set<HydrationFeatureKind>();\n\n for (const {ɵproviders, ɵkind} of features) {\n featuresKind.add(ɵkind);\n\n if (ɵproviders.length) {\n providers.push(ɵproviders);\n }\n }\n\n const hasHttpTransferCacheOptions = featuresKind.has(\n HydrationFeatureKind.HttpTransferCacheOptions,\n );\n\n if (\n typeof ngDevMode !== 'undefined' &&\n ngDevMode &&\n featuresKind.has(HydrationFeatureKind.NoHttpTransferCache) &&\n hasHttpTransferCacheOptions\n ) {\n throw new RuntimeError(\n RuntimeErrorCode.HYDRATION_CONFLICTING_FEATURES,\n 'Configuration error: found both withHttpTransferCacheOptions() and withNoHttpTransferCache() in the same call to provideClientHydration(), which is a contradiction.',\n );\n }\n\n return makeEnvironmentProviders([\n typeof ngDevMode !== 'undefined' && ngDevMode ? provideZoneJsCompatibilityDetector() : [],\n typeof ngDevMode !== 'undefined' && ngDevMode\n ? provideEnabledBlockingInitialNavigationDetector()\n : [],\n withDomHydration(),\n featuresKind.has(HydrationFeatureKind.NoHttpTransferCache) || hasHttpTransferCacheOptions\n ? []\n : ɵwithHttpTransferCache({}),\n providers,\n ]);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the platform-browser package.\n */\n\nimport {Version} from '@angular/core';\n\n/**\n * @publicApi\n */\nexport const VERSION = new Version('20.2.0-rc.1');\n"],"names":["getDOM","global","Console","allowSanitizationBypassOrThrow","unwrapSafeValue","_sanitizeHtml","RuntimeError","_sanitizeUrl","XSS_SECURITY_URL","bypassSanitizationTrustHtml","bypassSanitizationTrustStyle","bypassSanitizationTrustScript","bypassSanitizationTrustUrl","bypassSanitizationTrustResourceUrl","ɵwithHttpTransferCache","ɵwithI18nSupport","ɵwithEventReplay","ɵwithIncrementalHydration","ZONELESS_ENABLED","formatRuntimeError","IS_ENABLED_BLOCKING_INITIAL_NAVIGATION","withDomHydration"],"mappings":"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"}
|
package/fesm2022/testing.mjs
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license Angular v20.2.0-
|
2
|
+
* @license Angular v20.2.0-rc.1
|
3
3
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -43,10 +43,10 @@ class DOMTestComponentRenderer extends TestComponentRenderer {
|
|
43
43
|
_getDOM().remove(oldRoots[i]);
|
44
44
|
}
|
45
45
|
}
|
46
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-
|
47
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-
|
46
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: DOMTestComponentRenderer, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
47
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: DOMTestComponentRenderer });
|
48
48
|
}
|
49
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: DOMTestComponentRenderer, decorators: [{
|
50
50
|
type: Injectable
|
51
51
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
52
52
|
type: Inject,
|
@@ -65,9 +65,9 @@ const platformBrowserTesting = createPlatformFactory(platformBrowser, 'browserTe
|
|
65
65
|
* @publicApi
|
66
66
|
*/
|
67
67
|
class BrowserTestingModule {
|
68
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-
|
69
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.0-
|
70
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.0-
|
68
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: BrowserTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
69
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.0-rc.1", ngImport: i0, type: BrowserTestingModule, exports: [BrowserModule] });
|
70
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: BrowserTestingModule, providers: [
|
71
71
|
{ provide: APP_ID, useValue: 'a' },
|
72
72
|
_internalProvideZoneChangeDetection({}),
|
73
73
|
{ provide: _ChangeDetectionScheduler, useExisting: _ChangeDetectionSchedulerImpl },
|
@@ -75,7 +75,7 @@ class BrowserTestingModule {
|
|
75
75
|
{ provide: TestComponentRenderer, useClass: DOMTestComponentRenderer },
|
76
76
|
], imports: [BrowserModule] });
|
77
77
|
}
|
78
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-
|
78
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: BrowserTestingModule, decorators: [{
|
79
79
|
type: NgModule,
|
80
80
|
args: [{
|
81
81
|
exports: [BrowserModule],
|
package/index.d.ts
CHANGED
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@angular/platform-browser",
|
3
|
-
"version": "20.2.0-
|
3
|
+
"version": "20.2.0-rc.1",
|
4
4
|
"description": "Angular - library for using Angular in a web browser",
|
5
5
|
"author": "angular",
|
6
6
|
"license": "MIT",
|
@@ -11,9 +11,9 @@
|
|
11
11
|
"tslib": "^2.3.0"
|
12
12
|
},
|
13
13
|
"peerDependencies": {
|
14
|
-
"@angular/animations": "20.2.0-
|
15
|
-
"@angular/core": "20.2.0-
|
16
|
-
"@angular/common": "20.2.0-
|
14
|
+
"@angular/animations": "20.2.0-rc.1",
|
15
|
+
"@angular/core": "20.2.0-rc.1",
|
16
|
+
"@angular/common": "20.2.0-rc.1"
|
17
17
|
},
|
18
18
|
"peerDependenciesMeta": {
|
19
19
|
"@angular/animations": {
|
package/testing/index.d.ts
CHANGED