UNPKG

561 kBTypeScriptView Raw
1/**
2 * @license Angular v12.2.10
3 * (c) 2010-2021 Google LLC. https://angular.io/
4 * License: MIT
5 */
6
7import { Observable } from 'rxjs';
8import { Subject } from 'rxjs';
9import { Subscribable } from 'rxjs';
10import { Subscription } from 'rxjs';
11
12/**
13 * @description
14 *
15 * Represents an abstract class `T`, if applied to a concrete class it would stop being
16 * instantiable.
17 *
18 * @publicApi
19 */
20export declare interface AbstractType<T> extends Function {
21 prototype: T;
22}
23
24/**
25 * @description
26 * A lifecycle hook that is called after the default change detector has
27 * completed checking all content of a directive.
28 *
29 * @see `AfterViewChecked`
30 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
31 *
32 * @usageNotes
33 * The following snippet shows how a component can implement this interface to
34 * define its own after-check functionality.
35 *
36 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='AfterContentChecked'}
37 *
38 * @publicApi
39 */
40export declare interface AfterContentChecked {
41 /**
42 * A callback method that is invoked immediately after the
43 * default change detector has completed checking all of the directive's
44 * content.
45 */
46 ngAfterContentChecked(): void;
47}
48
49/**
50 * @description
51 * A lifecycle hook that is called after Angular has fully initialized
52 * all content of a directive.
53 * Define an `ngAfterContentInit()` method to handle any additional initialization tasks.
54 *
55 * @see `OnInit`
56 * @see `AfterViewInit`
57 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
58 *
59 * @usageNotes
60 * The following snippet shows how a component can implement this interface to
61 * define its own content initialization method.
62 *
63 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='AfterContentInit'}
64 *
65 * @publicApi
66 */
67export declare interface AfterContentInit {
68 /**
69 * A callback method that is invoked immediately after
70 * Angular has completed initialization of all of the directive's
71 * content.
72 * It is invoked only once when the directive is instantiated.
73 */
74 ngAfterContentInit(): void;
75}
76
77/**
78 * @description
79 * A lifecycle hook that is called after the default change detector has
80 * completed checking a component's view for changes.
81 *
82 * @see `AfterContentChecked`
83 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
84 *
85 * @usageNotes
86 * The following snippet shows how a component can implement this interface to
87 * define its own after-check functionality.
88 *
89 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='AfterViewChecked'}
90 *
91 * @publicApi
92 */
93export declare interface AfterViewChecked {
94 /**
95 * A callback method that is invoked immediately after the
96 * default change detector has completed one change-check cycle
97 * for a component's view.
98 */
99 ngAfterViewChecked(): void;
100}
101
102/**
103 * @description
104 * A lifecycle hook that is called after Angular has fully initialized
105 * a component's view.
106 * Define an `ngAfterViewInit()` method to handle any additional initialization tasks.
107 *
108 * @see `OnInit`
109 * @see `AfterContentInit`
110 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
111 *
112 * @usageNotes
113 * The following snippet shows how a component can implement this interface to
114 * define its own view initialization method.
115 *
116 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='AfterViewInit'}
117 *
118 * @publicApi
119 */
120export declare interface AfterViewInit {
121 /**
122 * A callback method that is invoked immediately after
123 * Angular has completed initialization of a component's view.
124 * It is invoked only once when the view is instantiated.
125 *
126 */
127 ngAfterViewInit(): void;
128}
129
130/**
131 * A DI token that you can use to create a virtual [provider](guide/glossary#provider)
132 * that will populate the `entryComponents` field of components and NgModules
133 * based on its `useValue` property value.
134 * All components that are referenced in the `useValue` value (either directly
135 * or in a nested array or map) are added to the `entryComponents` property.
136 *
137 * @usageNotes
138 *
139 * The following example shows how the router can populate the `entryComponents`
140 * field of an NgModule based on a router configuration that refers
141 * to components.
142 *
143 * ```typescript
144 * // helper function inside the router
145 * function provideRoutes(routes) {
146 * return [
147 * {provide: ROUTES, useValue: routes},
148 * {provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: routes, multi: true}
149 * ];
150 * }
151 *
152 * // user code
153 * let routes = [
154 * {path: '/root', component: RootComp},
155 * {path: '/teams', component: TeamsComp}
156 * ];
157 *
158 * @NgModule({
159 * providers: [provideRoutes(routes)]
160 * })
161 * class ModuleWithRoutes {}
162 * ```
163 *
164 * @publicApi
165 * @deprecated Since 9.0.0. With Ivy, this property is no longer necessary.
166 */
167export declare const ANALYZE_FOR_ENTRY_COMPONENTS: InjectionToken<any>;
168
169/**
170 * A [DI token](guide/glossary#di-token "DI token definition") that provides a set of callbacks to
171 * be called for every component that is bootstrapped.
172 *
173 * Each callback must take a `ComponentRef` instance and return nothing.
174 *
175 * `(componentRef: ComponentRef) => void`
176 *
177 * @publicApi
178 */
179export declare const APP_BOOTSTRAP_LISTENER: InjectionToken<((compRef: ComponentRef<any>) => void)[]>;
180
181/**
182 * A [DI token](guide/glossary#di-token "DI token definition") representing a unique string ID, used
183 * primarily for prefixing application attributes and CSS styles when
184 * {@link ViewEncapsulation#Emulated ViewEncapsulation.Emulated} is being used.
185 *
186 * BY default, the value is randomly generated and assigned to the application by Angular.
187 * To provide a custom ID value, use a DI provider <!-- TODO: provider --> to configure
188 * the root {@link Injector} that uses this token.
189 *
190 * @publicApi
191 */
192export declare const APP_ID: InjectionToken<string>;
193
194/**
195 * A [DI token](guide/glossary#di-token "DI token definition") that you can use to provide
196 * one or more initialization functions.
197 *
198 * The provided functions are injected at application startup and executed during
199 * app initialization. If any of these functions returns a Promise or an Observable, initialization
200 * does not complete until the Promise is resolved or the Observable is completed.
201 *
202 * You can, for example, create a factory function that loads language data
203 * or an external configuration, and provide that function to the `APP_INITIALIZER` token.
204 * The function is executed during the application bootstrap process,
205 * and the needed data is available on startup.
206 *
207 * @see `ApplicationInitStatus`
208 *
209 * @usageNotes
210 *
211 * The following example illustrates how to configure a multi-provider using `APP_INITIALIZER` token
212 * and a function returning a promise.
213 *
214 * ```
215 * function initializeApp(): Promise<any> {
216 * return new Promise((resolve, reject) => {
217 * // Do some asynchronous stuff
218 * resolve();
219 * });
220 * }
221 *
222 * @NgModule({
223 * imports: [BrowserModule],
224 * declarations: [AppComponent],
225 * bootstrap: [AppComponent],
226 * providers: [{
227 * provide: APP_INITIALIZER,
228 * useFactory: () => initializeApp,
229 * multi: true
230 * }]
231 * })
232 * export class AppModule {}
233 * ```
234 *
235 * It's also possible to configure a multi-provider using `APP_INITIALIZER` token and a function
236 * returning an observable, see an example below. Note: the `HttpClient` in this example is used for
237 * demo purposes to illustrate how the factory function can work with other providers available
238 * through DI.
239 *
240 * ```
241 * function initializeAppFactory(httpClient: HttpClient): () => Observable<any> {
242 * return () => httpClient.get("https://someUrl.com/api/user")
243 * .pipe(
244 * tap(user => { ... })
245 * );
246 * }
247 *
248 * @NgModule({
249 * imports: [BrowserModule, HttpClientModule],
250 * declarations: [AppComponent],
251 * bootstrap: [AppComponent],
252 * providers: [{
253 * provide: APP_INITIALIZER,
254 * useFactory: initializeAppFactory,
255 * deps: [HttpClient],
256 * multi: true
257 * }]
258 * })
259 * export class AppModule {}
260 * ```
261 *
262 * @publicApi
263 */
264export declare const APP_INITIALIZER: InjectionToken<readonly (() => Observable<unknown> | Promise<unknown> | void)[]>;
265
266/**
267 * A class that reflects the state of running {@link APP_INITIALIZER} functions.
268 *
269 * @publicApi
270 */
271export declare class ApplicationInitStatus {
272 private readonly appInits;
273 private resolve;
274 private reject;
275 private initialized;
276 readonly donePromise: Promise<any>;
277 readonly done = false;
278 constructor(appInits: ReadonlyArray<() => Observable<unknown> | Promise<unknown> | void>);
279}
280
281/**
282 * Configures the root injector for an app with
283 * providers of `@angular/core` dependencies that `ApplicationRef` needs
284 * to bootstrap components.
285 *
286 * Re-exported by `BrowserModule`, which is included automatically in the root
287 * `AppModule` when you create a new app with the CLI `new` command.
288 *
289 * @publicApi
290 */
291export declare class ApplicationModule {
292 constructor(appRef: ApplicationRef);
293}
294
295/**
296 * A reference to an Angular application running on a page.
297 *
298 * @usageNotes
299 *
300 * {@a is-stable-examples}
301 * ### isStable examples and caveats
302 *
303 * Note two important points about `isStable`, demonstrated in the examples below:
304 * - the application will never be stable if you start any kind
305 * of recurrent asynchronous task when the application starts
306 * (for example for a polling process, started with a `setInterval`, a `setTimeout`
307 * or using RxJS operators like `interval`);
308 * - the `isStable` Observable runs outside of the Angular zone.
309 *
310 * Let's imagine that you start a recurrent task
311 * (here incrementing a counter, using RxJS `interval`),
312 * and at the same time subscribe to `isStable`.
313 *
314 * ```
315 * constructor(appRef: ApplicationRef) {
316 * appRef.isStable.pipe(
317 * filter(stable => stable)
318 * ).subscribe(() => console.log('App is stable now');
319 * interval(1000).subscribe(counter => console.log(counter));
320 * }
321 * ```
322 * In this example, `isStable` will never emit `true`,
323 * and the trace "App is stable now" will never get logged.
324 *
325 * If you want to execute something when the app is stable,
326 * you have to wait for the application to be stable
327 * before starting your polling process.
328 *
329 * ```
330 * constructor(appRef: ApplicationRef) {
331 * appRef.isStable.pipe(
332 * first(stable => stable),
333 * tap(stable => console.log('App is stable now')),
334 * switchMap(() => interval(1000))
335 * ).subscribe(counter => console.log(counter));
336 * }
337 * ```
338 * In this example, the trace "App is stable now" will be logged
339 * and then the counter starts incrementing every second.
340 *
341 * Note also that this Observable runs outside of the Angular zone,
342 * which means that the code in the subscription
343 * to this Observable will not trigger the change detection.
344 *
345 * Let's imagine that instead of logging the counter value,
346 * you update a field of your component
347 * and display it in its template.
348 *
349 * ```
350 * constructor(appRef: ApplicationRef) {
351 * appRef.isStable.pipe(
352 * first(stable => stable),
353 * switchMap(() => interval(1000))
354 * ).subscribe(counter => this.value = counter);
355 * }
356 * ```
357 * As the `isStable` Observable runs outside the zone,
358 * the `value` field will be updated properly,
359 * but the template will not be refreshed!
360 *
361 * You'll have to manually trigger the change detection to update the template.
362 *
363 * ```
364 * constructor(appRef: ApplicationRef, cd: ChangeDetectorRef) {
365 * appRef.isStable.pipe(
366 * first(stable => stable),
367 * switchMap(() => interval(1000))
368 * ).subscribe(counter => {
369 * this.value = counter;
370 * cd.detectChanges();
371 * });
372 * }
373 * ```
374 *
375 * Or make the subscription callback run inside the zone.
376 *
377 * ```
378 * constructor(appRef: ApplicationRef, zone: NgZone) {
379 * appRef.isStable.pipe(
380 * first(stable => stable),
381 * switchMap(() => interval(1000))
382 * ).subscribe(counter => zone.run(() => this.value = counter));
383 * }
384 * ```
385 *
386 * @publicApi
387 */
388export declare class ApplicationRef {
389 private _zone;
390 private _injector;
391 private _exceptionHandler;
392 private _componentFactoryResolver;
393 private _initStatus;
394 private _views;
395 private _runningTick;
396 private _stable;
397 private _onMicrotaskEmptySubscription;
398 /**
399 * Get a list of component types registered to this application.
400 * This list is populated even before the component is created.
401 */
402 readonly componentTypes: Type<any>[];
403 /**
404 * Get a list of components registered to this application.
405 */
406 readonly components: ComponentRef<any>[];
407 /**
408 * Returns an Observable that indicates when the application is stable or unstable.
409 *
410 * @see [Usage notes](#is-stable-examples) for examples and caveats when using this API.
411 */
412 readonly isStable: Observable<boolean>;
413 /**
414 * Bootstrap a component onto the element identified by its selector or, optionally, to a
415 * specified element.
416 *
417 * @usageNotes
418 * ### Bootstrap process
419 *
420 * When bootstrapping a component, Angular mounts it onto a target DOM element
421 * and kicks off automatic change detection. The target DOM element can be
422 * provided using the `rootSelectorOrNode` argument.
423 *
424 * If the target DOM element is not provided, Angular tries to find one on a page
425 * using the `selector` of the component that is being bootstrapped
426 * (first matched element is used).
427 *
428 * ### Example
429 *
430 * Generally, we define the component to bootstrap in the `bootstrap` array of `NgModule`,
431 * but it requires us to know the component while writing the application code.
432 *
433 * Imagine a situation where we have to wait for an API call to decide about the component to
434 * bootstrap. We can use the `ngDoBootstrap` hook of the `NgModule` and call this method to
435 * dynamically bootstrap a component.
436 *
437 * {@example core/ts/platform/platform.ts region='componentSelector'}
438 *
439 * Optionally, a component can be mounted onto a DOM element that does not match the
440 * selector of the bootstrapped component.
441 *
442 * In the following example, we are providing a CSS selector to match the target element.
443 *
444 * {@example core/ts/platform/platform.ts region='cssSelector'}
445 *
446 * While in this example, we are providing reference to a DOM node.
447 *
448 * {@example core/ts/platform/platform.ts region='domNode'}
449 */
450 bootstrap<C>(componentOrFactory: ComponentFactory<C> | Type<C>, rootSelectorOrNode?: string | any): ComponentRef<C>;
451 /**
452 * Invoke this method to explicitly process change detection and its side-effects.
453 *
454 * In development mode, `tick()` also performs a second change detection cycle to ensure that no
455 * further changes are detected. If additional changes are picked up during this second cycle,
456 * bindings in the app have side-effects that cannot be resolved in a single change detection
457 * pass.
458 * In this case, Angular throws an error, since an Angular application can only have one change
459 * detection pass during which all change detection must complete.
460 */
461 tick(): void;
462 /**
463 * Attaches a view so that it will be dirty checked.
464 * The view will be automatically detached when it is destroyed.
465 * This will throw if the view is already attached to a ViewContainer.
466 */
467 attachView(viewRef: ViewRef): void;
468 /**
469 * Detaches a view from dirty checking again.
470 */
471 detachView(viewRef: ViewRef): void;
472 private _loadComponent;
473 /**
474 * Returns the number of attached views.
475 */
476 get viewCount(): number;
477}
478
479/**
480 * @publicApi
481 */
482export declare function asNativeElements(debugEls: DebugElement[]): any;
483
484/**
485 * Checks that there is currently a platform that contains the given token as a provider.
486 *
487 * @publicApi
488 */
489export declare function assertPlatform(requiredToken: any): PlatformRef;
490
491/**
492 * Type of the Attribute metadata.
493 *
494 * @publicApi
495 */
496export declare interface Attribute {
497 /**
498 * The name of the attribute whose value can be injected.
499 */
500 attributeName: string;
501}
502
503/**
504 * Attribute decorator and metadata.
505 *
506 * @Annotation
507 * @publicApi
508 */
509export declare const Attribute: AttributeDecorator;
510
511
512/**
513 * Type of the Attribute decorator / constructor function.
514 *
515 * @publicApi
516 */
517export declare interface AttributeDecorator {
518 /**
519 * Parameter decorator for a directive constructor that designates
520 * a host-element attribute whose value is injected as a constant string literal.
521 *
522 * @usageNotes
523 *
524 * Suppose we have an `<input>` element and want to know its `type`.
525 *
526 * ```html
527 * <input type="text">
528 * ```
529 *
530 * The following example uses the decorator to inject the string literal `text` in a directive.
531 *
532 * {@example core/ts/metadata/metadata.ts region='attributeMetadata'}
533 *
534 * The following example uses the decorator in a component constructor.
535 *
536 * {@example core/ts/metadata/metadata.ts region='attributeFactory'}
537 *
538 */
539 (name: string): any;
540 new (name: string): Attribute;
541}
542
543declare interface BindingDef {
544 flags: ɵBindingFlags;
545 ns: string | null;
546 name: string | null;
547 nonMinifiedName: string | null;
548 securityContext: SecurityContext | null;
549 suffix: string | null;
550}
551
552/**
553 * Provides additional options to the bootstraping process.
554 *
555 *
556 */
557declare interface BootstrapOptions {
558 /**
559 * Optionally specify which `NgZone` should be used.
560 *
561 * - Provide your own `NgZone` instance.
562 * - `zone.js` - Use default `NgZone` which requires `Zone.js`.
563 * - `noop` - Use `NoopNgZone` which does nothing.
564 */
565 ngZone?: NgZone | 'zone.js' | 'noop';
566 /**
567 * Optionally specify coalescing event change detections or not.
568 * Consider the following case.
569 *
570 * <div (click)="doSomething()">
571 * <button (click)="doSomethingElse()"></button>
572 * </div>
573 *
574 * When button is clicked, because of the event bubbling, both
575 * event handlers will be called and 2 change detections will be
576 * triggered. We can colesce such kind of events to only trigger
577 * change detection only once.
578 *
579 * By default, this option will be false. So the events will not be
580 * coalesced and the change detection will be triggered multiple times.
581 * And if this option be set to true, the change detection will be
582 * triggered async by scheduling a animation frame. So in the case above,
583 * the change detection will only be triggered once.
584 */
585 ngZoneEventCoalescing?: boolean;
586 /**
587 * Optionally specify if `NgZone#run()` method invocations should be coalesced
588 * into a single change detection.
589 *
590 * Consider the following case.
591 *
592 * for (let i = 0; i < 10; i ++) {
593 * ngZone.run(() => {
594 * // do something
595 * });
596 * }
597 *
598 * This case triggers the change detection multiple times.
599 * With ngZoneRunCoalescing options, all change detections in an event loop trigger only once.
600 * In addition, the change detection executes in requestAnimation.
601 *
602 */
603 ngZoneRunCoalescing?: boolean;
604}
605
606
607/**
608 * The strategy that the default change detector uses to detect changes.
609 * When set, takes effect the next time change detection is triggered.
610 *
611 * @see {@link ChangeDetectorRef#usage-notes Change detection usage}
612 *
613 * @publicApi
614 */
615export declare enum ChangeDetectionStrategy {
616 /**
617 * Use the `CheckOnce` strategy, meaning that automatic change detection is deactivated
618 * until reactivated by setting the strategy to `Default` (`CheckAlways`).
619 * Change detection can still be explicitly invoked.
620 * This strategy applies to all child directives and cannot be overridden.
621 */
622 OnPush = 0,
623 /**
624 * Use the default `CheckAlways` strategy, in which change detection is automatic until
625 * explicitly deactivated.
626 */
627 Default = 1
628}
629
630declare type ChangeDetectionStrategy_2 = number;
631
632/**
633 * Base class that provides change detection functionality.
634 * A change-detection tree collects all views that are to be checked for changes.
635 * Use the methods to add and remove views from the tree, initiate change-detection,
636 * and explicitly mark views as _dirty_, meaning that they have changed and need to be re-rendered.
637 *
638 * @see [Using change detection hooks](guide/lifecycle-hooks#using-change-detection-hooks)
639 * @see [Defining custom change detection](guide/lifecycle-hooks#defining-custom-change-detection)
640 *
641 * @usageNotes
642 *
643 * The following examples demonstrate how to modify default change-detection behavior
644 * to perform explicit detection when needed.
645 *
646 * ### Use `markForCheck()` with `CheckOnce` strategy
647 *
648 * The following example sets the `OnPush` change-detection strategy for a component
649 * (`CheckOnce`, rather than the default `CheckAlways`), then forces a second check
650 * after an interval. See [live demo](https://plnkr.co/edit/GC512b?p=preview).
651 *
652 * <code-example path="core/ts/change_detect/change-detection.ts"
653 * region="mark-for-check"></code-example>
654 *
655 * ### Detach change detector to limit how often check occurs
656 *
657 * The following example defines a component with a large list of read-only data
658 * that is expected to change constantly, many times per second.
659 * To improve performance, we want to check and update the list
660 * less often than the changes actually occur. To do that, we detach
661 * the component's change detector and perform an explicit local check every five seconds.
662 *
663 * <code-example path="core/ts/change_detect/change-detection.ts" region="detach"></code-example>
664 *
665 *
666 * ### Reattaching a detached component
667 *
668 * The following example creates a component displaying live data.
669 * The component detaches its change detector from the main change detector tree
670 * when the `live` property is set to false, and reattaches it when the property
671 * becomes true.
672 *
673 * <code-example path="core/ts/change_detect/change-detection.ts" region="reattach"></code-example>
674 *
675 * @publicApi
676 */
677export declare abstract class ChangeDetectorRef {
678 /**
679 * When a view uses the {@link ChangeDetectionStrategy#OnPush OnPush} (checkOnce)
680 * change detection strategy, explicitly marks the view as changed so that
681 * it can be checked again.
682 *
683 * Components are normally marked as dirty (in need of rerendering) when inputs
684 * have changed or events have fired in the view. Call this method to ensure that
685 * a component is checked even if these triggers have not occured.
686 *
687 * <!-- TODO: Add a link to a chapter on OnPush components -->
688 *
689 */
690 abstract markForCheck(): void;
691 /**
692 * Detaches this view from the change-detection tree.
693 * A detached view is not checked until it is reattached.
694 * Use in combination with `detectChanges()` to implement local change detection checks.
695 *
696 * Detached views are not checked during change detection runs until they are
697 * re-attached, even if they are marked as dirty.
698 *
699 * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
700 * <!-- TODO: Add a live demo once ref.detectChanges is merged into master -->
701 *
702 */
703 abstract detach(): void;
704 /**
705 * Checks this view and its children. Use in combination with {@link ChangeDetectorRef#detach
706 * detach}
707 * to implement local change detection checks.
708 *
709 * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
710 * <!-- TODO: Add a live demo once ref.detectChanges is merged into master -->
711 *
712 */
713 abstract detectChanges(): void;
714 /**
715 * Checks the change detector and its children, and throws if any changes are detected.
716 *
717 * Use in development mode to verify that running change detection doesn't introduce
718 * other changes.
719 */
720 abstract checkNoChanges(): void;
721 /**
722 * Re-attaches the previously detached view to the change detection tree.
723 * Views are attached to the tree by default.
724 *
725 * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
726 *
727 */
728 abstract reattach(): void;
729}
730
731declare const CHILD_HEAD = 13;
732
733declare const CHILD_TAIL = 14;
734
735/**
736 * Configures the `Injector` to return an instance of `useClass` for a token.
737 * @see ["Dependency Injection Guide"](guide/dependency-injection).
738 *
739 * @usageNotes
740 *
741 * {@example core/di/ts/provider_spec.ts region='ClassProvider'}
742 *
743 * Note that following two providers are not equal:
744 *
745 * {@example core/di/ts/provider_spec.ts region='ClassProviderDifference'}
746 *
747 * ### Multi-value example
748 *
749 * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
750 *
751 * @publicApi
752 */
753export declare interface ClassProvider extends ClassSansProvider {
754 /**
755 * An injection token. (Typically an instance of `Type` or `InjectionToken`, but can be `any`).
756 */
757 provide: any;
758 /**
759 * When true, injector returns an array of instances. This is useful to allow multiple
760 * providers spread across many files to provide configuration information to a common token.
761 */
762 multi?: boolean;
763}
764
765/**
766 * Configures the `Injector` to return a value by invoking a `useClass` function.
767 * Base for `ClassProvider` decorator.
768 *
769 * @see ["Dependency Injection Guide"](guide/dependency-injection).
770 *
771 * @publicApi
772 */
773export declare interface ClassSansProvider {
774 /**
775 * Class to instantiate for the `token`.
776 */
777 useClass: Type<any>;
778}
779
780declare const CLEANUP = 7;
781
782/**
783 * Compile an Angular injectable according to its `Injectable` metadata, and patch the resulting
784 * injectable def (`ɵprov`) onto the injectable type.
785 */
786declare function compileInjectable(type: Type<any>, meta?: Injectable): void;
787
788/**
789 * Low-level service for running the angular compiler during runtime
790 * to create {@link ComponentFactory}s, which
791 * can later be used to create and render a Component instance.
792 *
793 * Each `@NgModule` provides an own `Compiler` to its injector,
794 * that will use the directives/pipes of the ng module for compilation
795 * of components.
796 *
797 * @publicApi
798 */
799export declare class Compiler {
800 /**
801 * Compiles the given NgModule and all of its components. All templates of the components listed
802 * in `entryComponents` have to be inlined.
803 */
804 compileModuleSync: <T>(moduleType: Type<T>) => NgModuleFactory<T>;
805 /**
806 * Compiles the given NgModule and all of its components
807 */
808 compileModuleAsync: <T>(moduleType: Type<T>) => Promise<NgModuleFactory<T>>;
809 /**
810 * Same as {@link #compileModuleSync} but also creates ComponentFactories for all components.
811 */
812 compileModuleAndAllComponentsSync: <T>(moduleType: Type<T>) => ModuleWithComponentFactories<T>;
813 /**
814 * Same as {@link #compileModuleAsync} but also creates ComponentFactories for all components.
815 */
816 compileModuleAndAllComponentsAsync: <T>(moduleType: Type<T>) => Promise<ModuleWithComponentFactories<T>>;
817 /**
818 * Clears all caches.
819 */
820 clearCache(): void;
821 /**
822 * Clears the cache for the given component/ngModule.
823 */
824 clearCacheFor(type: Type<any>): void;
825 /**
826 * Returns the id for a given NgModule, if one is defined and known to the compiler.
827 */
828 getModuleId(moduleType: Type<any>): string | undefined;
829}
830
831/**
832 * Token to provide CompilerOptions in the platform injector.
833 *
834 * @publicApi
835 */
836export declare const COMPILER_OPTIONS: InjectionToken<CompilerOptions[]>;
837
838/**
839 * A factory for creating a Compiler
840 *
841 * @publicApi
842 */
843export declare abstract class CompilerFactory {
844 abstract createCompiler(options?: CompilerOptions[]): Compiler;
845}
846
847/**
848 * Options for creating a compiler
849 *
850 * @publicApi
851 */
852export declare type CompilerOptions = {
853 useJit?: boolean;
854 defaultEncapsulation?: ViewEncapsulation;
855 providers?: StaticProvider[];
856 missingTranslation?: MissingTranslationStrategy;
857 preserveWhitespaces?: boolean;
858};
859
860/**
861 * Supplies configuration metadata for an Angular component.
862 *
863 * @publicApi
864 */
865export declare interface Component extends Directive {
866 /**
867 * The change-detection strategy to use for this component.
868 *
869 * When a component is instantiated, Angular creates a change detector,
870 * which is responsible for propagating the component's bindings.
871 * The strategy is one of:
872 * - `ChangeDetectionStrategy#OnPush` sets the strategy to `CheckOnce` (on demand).
873 * - `ChangeDetectionStrategy#Default` sets the strategy to `CheckAlways`.
874 */
875 changeDetection?: ChangeDetectionStrategy;
876 /**
877 * Defines the set of injectable objects that are visible to its view DOM children.
878 * See [example](#injecting-a-class-with-a-view-provider).
879 *
880 */
881 viewProviders?: Provider[];
882 /**
883 * The module ID of the module that contains the component.
884 * The component must be able to resolve relative URLs for templates and styles.
885 * SystemJS exposes the `__moduleName` variable within each module.
886 * In CommonJS, this can be set to `module.id`.
887 *
888 */
889 moduleId?: string;
890 /**
891 * The relative path or absolute URL of a template file for an Angular component.
892 * If provided, do not supply an inline template using `template`.
893 *
894 */
895 templateUrl?: string;
896 /**
897 * An inline template for an Angular component. If provided,
898 * do not supply a template file using `templateUrl`.
899 *
900 */
901 template?: string;
902 /**
903 * One or more relative paths or absolute URLs for files containing CSS stylesheets to use
904 * in this component.
905 */
906 styleUrls?: string[];
907 /**
908 * One or more inline CSS stylesheets to use
909 * in this component.
910 */
911 styles?: string[];
912 /**
913 * One or more animation `trigger()` calls, containing
914 * `state()` and `transition()` definitions.
915 * See the [Animations guide](/guide/animations) and animations API documentation.
916 *
917 */
918 animations?: any[];
919 /**
920 * An encapsulation policy for the template and CSS styles. One of:
921 * - `ViewEncapsulation.Emulated`: Use shimmed CSS that
922 * emulates the native behavior.
923 * - `ViewEncapsulation.None`: Use global CSS without any
924 * encapsulation.
925 * - `ViewEncapsulation.ShadowDom`: Use Shadow DOM v1 to encapsulate styles.
926 *
927 * If not supplied, the value is taken from `CompilerOptions`. The default compiler option is
928 * `ViewEncapsulation.Emulated`.
929 *
930 * If the policy is set to `ViewEncapsulation.Emulated` and the component has no `styles`
931 * or `styleUrls` specified, the policy is automatically switched to `ViewEncapsulation.None`.
932 */
933 encapsulation?: ViewEncapsulation;
934 /**
935 * Overrides the default interpolation start and end delimiters (`{{` and `}}`).
936 */
937 interpolation?: [string, string];
938 /**
939 * A set of components that should be compiled along with
940 * this component. For each component listed here,
941 * Angular creates a {@link ComponentFactory} and stores it in the
942 * {@link ComponentFactoryResolver}.
943 * @deprecated Since 9.0.0. With Ivy, this property is no longer necessary.
944 */
945 entryComponents?: Array<Type<any> | any[]>;
946 /**
947 * True to preserve or false to remove potentially superfluous whitespace characters
948 * from the compiled template. Whitespace characters are those matching the `\s`
949 * character class in JavaScript regular expressions. Default is false, unless
950 * overridden in compiler options.
951 */
952 preserveWhitespaces?: boolean;
953}
954
955/**
956 * Component decorator and metadata.
957 *
958 * @Annotation
959 * @publicApi
960 */
961export declare const Component: ComponentDecorator;
962
963/**
964 * Component decorator interface
965 *
966 * @publicApi
967 */
968export declare interface ComponentDecorator {
969 /**
970 * Decorator that marks a class as an Angular component and provides configuration
971 * metadata that determines how the component should be processed,
972 * instantiated, and used at runtime.
973 *
974 * Components are the most basic UI building block of an Angular app.
975 * An Angular app contains a tree of Angular components.
976 *
977 * Angular components are a subset of directives, always associated with a template.
978 * Unlike other directives, only one component can be instantiated for a given element in a
979 * template.
980 *
981 * A component must belong to an NgModule in order for it to be available
982 * to another component or application. To make it a member of an NgModule,
983 * list it in the `declarations` field of the `NgModule` metadata.
984 *
985 * Note that, in addition to these options for configuring a directive,
986 * you can control a component's runtime behavior by implementing
987 * life-cycle hooks. For more information, see the
988 * [Lifecycle Hooks](guide/lifecycle-hooks) guide.
989 *
990 * @usageNotes
991 *
992 * ### Setting component inputs
993 *
994 * The following example creates a component with two data-bound properties,
995 * specified by the `inputs` value.
996 *
997 * <code-example path="core/ts/metadata/directives.ts" region="component-input"></code-example>
998 *
999 *
1000 * ### Setting component outputs
1001 *
1002 * The following example shows two event emitters that emit on an interval. One
1003 * emits an output every second, while the other emits every five seconds.
1004 *
1005 * {@example core/ts/metadata/directives.ts region='component-output-interval'}
1006 *
1007 * ### Injecting a class with a view provider
1008 *
1009 * The following simple example injects a class into a component
1010 * using the view provider specified in component metadata:
1011 *
1012 * ```ts
1013 * class Greeter {
1014 * greet(name:string) {
1015 * return 'Hello ' + name + '!';
1016 * }
1017 * }
1018 *
1019 * @Directive({
1020 * selector: 'needs-greeter'
1021 * })
1022 * class NeedsGreeter {
1023 * greeter:Greeter;
1024 *
1025 * constructor(greeter:Greeter) {
1026 * this.greeter = greeter;
1027 * }
1028 * }
1029 *
1030 * @Component({
1031 * selector: 'greet',
1032 * viewProviders: [
1033 * Greeter
1034 * ],
1035 * template: `<needs-greeter></needs-greeter>`
1036 * })
1037 * class HelloWorld {
1038 * }
1039 *
1040 * ```
1041 *
1042 * ### Preserving whitespace
1043 *
1044 * Removing whitespace can greatly reduce AOT-generated code size and speed up view creation.
1045 * As of Angular 6, the default for `preserveWhitespaces` is false (whitespace is removed).
1046 * To change the default setting for all components in your application, set
1047 * the `preserveWhitespaces` option of the AOT compiler.
1048 *
1049 * By default, the AOT compiler removes whitespace characters as follows:
1050 * * Trims all whitespaces at the beginning and the end of a template.
1051 * * Removes whitespace-only text nodes. For example,
1052 *
1053 * ```html
1054 * <button>Action 1</button> <button>Action 2</button>
1055 * ```
1056 *
1057 * becomes:
1058 *
1059 * ```html
1060 * <button>Action 1</button><button>Action 2</button>
1061 * ```
1062 *
1063 * * Replaces a series of whitespace characters in text nodes with a single space.
1064 * For example, `<span>\n some text\n</span>` becomes `<span> some text </span>`.
1065 * * Does NOT alter text nodes inside HTML tags such as `<pre>` or `<textarea>`,
1066 * where whitespace characters are significant.
1067 *
1068 * Note that these transformations can influence DOM nodes layout, although impact
1069 * should be minimal.
1070 *
1071 * You can override the default behavior to preserve whitespace characters
1072 * in certain fragments of a template. For example, you can exclude an entire
1073 * DOM sub-tree by using the `ngPreserveWhitespaces` attribute:
1074 *
1075 * ```html
1076 * <div ngPreserveWhitespaces>
1077 * whitespaces are preserved here
1078 * <span> and here </span>
1079 * </div>
1080 * ```
1081 *
1082 * You can force a single space to be preserved in a text node by using `&ngsp;`,
1083 * which is replaced with a space character by Angular's template
1084 * compiler:
1085 *
1086 * ```html
1087 * <a>Spaces</a>&ngsp;<a>between</a>&ngsp;<a>links.</a>
1088 * <!-- compiled to be equivalent to:
1089 * <a>Spaces</a> <a>between</a> <a>links.</a> -->
1090 * ```
1091 *
1092 * Note that sequences of `&ngsp;` are still collapsed to just one space character when
1093 * the `preserveWhitespaces` option is set to `false`.
1094 *
1095 * ```html
1096 * <a>before</a>&ngsp;&ngsp;&ngsp;<a>after</a>
1097 * <!-- compiled to be equivalent to:
1098 * <a>before</a> <a>after</a> -->
1099 * ```
1100 *
1101 * To preserve sequences of whitespace characters, use the
1102 * `ngPreserveWhitespaces` attribute.
1103 *
1104 * @Annotation
1105 */
1106 (obj: Component): TypeDecorator;
1107 /**
1108 * See the `Component` decorator.
1109 */
1110 new (obj: Component): Component;
1111}
1112
1113declare interface ComponentDefFeature {
1114 <T>(componentDef: ɵComponentDef<T>): void;
1115 /**
1116 * Marks a feature as something that {@link InheritDefinitionFeature} will execute
1117 * during inheritance.
1118 *
1119 * NOTE: DO NOT SET IN ROOT OF MODULE! Doing so will result in tree-shakers/bundlers
1120 * identifying the change as a side effect, and the feature will be included in
1121 * every bundle.
1122 */
1123 ngInherit?: true;
1124}
1125
1126/**
1127 * Base class for a factory that can create a component dynamically.
1128 * Instantiate a factory for a given type of component with `resolveComponentFactory()`.
1129 * Use the resulting `ComponentFactory.create()` method to create a component of that type.
1130 *
1131 * @see [Dynamic Components](guide/dynamic-component-loader)
1132 *
1133 * @publicApi
1134 */
1135declare abstract class ComponentFactory<C> {
1136 /**
1137 * The component's HTML selector.
1138 */
1139 abstract get selector(): string;
1140 /**
1141 * The type of component the factory will create.
1142 */
1143 abstract get componentType(): Type<any>;
1144 /**
1145 * Selector for all <ng-content> elements in the component.
1146 */
1147 abstract get ngContentSelectors(): string[];
1148 /**
1149 * The inputs of the component.
1150 */
1151 abstract get inputs(): {
1152 propName: string;
1153 templateName: string;
1154 }[];
1155 /**
1156 * The outputs of the component.
1157 */
1158 abstract get outputs(): {
1159 propName: string;
1160 templateName: string;
1161 }[];
1162 /**
1163 * Creates a new component.
1164 */
1165 abstract create(injector: Injector, projectableNodes?: any[][], rootSelectorOrNode?: string | any, ngModule?: NgModuleRef<any>): ComponentRef<C>;
1166}
1167export { ComponentFactory }
1168export { ComponentFactory as ɵComponentFactory }
1169
1170/**
1171 * A simple registry that maps `Components` to generated `ComponentFactory` classes
1172 * that can be used to create instances of components.
1173 * Use to obtain the factory for a given component type,
1174 * then use the factory's `create()` method to create a component of that type.
1175 *
1176 * @see [Dynamic Components](guide/dynamic-component-loader)
1177 * @see [Usage Example](guide/dynamic-component-loader#resolving-components)
1178 * @see <live-example name="dynamic-component-loader" noDownload></live-example>
1179 of the code in this cookbook
1180 * @publicApi
1181 */
1182export declare abstract class ComponentFactoryResolver {
1183 static NULL: ComponentFactoryResolver;
1184 /**
1185 * Retrieves the factory object that creates a component of the given type.
1186 * @param component The component type.
1187 */
1188 abstract resolveComponentFactory<T>(component: Type<T>): ComponentFactory<T>;
1189}
1190
1191declare class ComponentFactoryResolver_2 extends ComponentFactoryResolver {
1192 private ngModule?;
1193 /**
1194 * @param ngModule The NgModuleRef to which all resolved factories are bound.
1195 */
1196 constructor(ngModule?: NgModuleRef<any> | undefined);
1197 resolveComponentFactory<T>(component: Type<T>): ComponentFactory<T>;
1198}
1199
1200declare type ComponentInstance = {};
1201
1202/**
1203 * Represents a component created by a `ComponentFactory`.
1204 * Provides access to the component instance and related objects,
1205 * and provides the means of destroying the instance.
1206 *
1207 * @publicApi
1208 */
1209export declare abstract class ComponentRef<C> {
1210 /**
1211 * The host or anchor [element](guide/glossary#element) for this component instance.
1212 */
1213 abstract get location(): ElementRef;
1214 /**
1215 * The [dependency injector](guide/glossary#injector) for this component instance.
1216 */
1217 abstract get injector(): Injector;
1218 /**
1219 * This component instance.
1220 */
1221 abstract get instance(): C;
1222 /**
1223 * The [host view](guide/glossary#view-tree) defined by the template
1224 * for this component instance.
1225 */
1226 abstract get hostView(): ViewRef;
1227 /**
1228 * The change detector for this component instance.
1229 */
1230 abstract get changeDetectorRef(): ChangeDetectorRef;
1231 /**
1232 * The type of this component (as created by a `ComponentFactory` class).
1233 */
1234 abstract get componentType(): Type<any>;
1235 /**
1236 * Destroys the component instance and all of the data structures associated with it.
1237 */
1238 abstract destroy(): void;
1239 /**
1240 * A lifecycle hook that provides additional developer-defined cleanup
1241 * functionality for the component.
1242 * @param callback A handler function that cleans up developer-defined data
1243 * associated with this component. Called when the `destroy()` method is invoked.
1244 */
1245 abstract onDestroy(callback: Function): void;
1246}
1247
1248/**
1249 * Definition of what a template rendering function should look like for a component.
1250 */
1251declare type ComponentTemplate<T> = {
1252 <U extends T>(rf: ɵRenderFlags, ctx: T | U): void;
1253};
1254
1255/**
1256 * Configures the `Injector` to return an instance of a token.
1257 *
1258 * @see ["Dependency Injection Guide"](guide/dependency-injection).
1259 *
1260 * @usageNotes
1261 *
1262 * {@example core/di/ts/provider_spec.ts region='ConstructorProvider'}
1263 *
1264 * ### Multi-value example
1265 *
1266 * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
1267 *
1268 * @publicApi
1269 */
1270export declare interface ConstructorProvider extends ConstructorSansProvider {
1271 /**
1272 * An injection token. Typically an instance of `Type` or `InjectionToken`, but can be `any`.
1273 */
1274 provide: Type<any>;
1275 /**
1276 * When true, injector returns an array of instances. This is useful to allow multiple
1277 * providers spread across many files to provide configuration information to a common token.
1278 */
1279 multi?: boolean;
1280}
1281
1282/**
1283 * Configures the `Injector` to return an instance of a token.
1284 *
1285 * @see ["Dependency Injection Guide"](guide/dependency-injection).
1286 *
1287 * @usageNotes
1288 *
1289 * ```ts
1290 * @Injectable(SomeModule, {deps: []})
1291 * class MyService {}
1292 * ```
1293 *
1294 * @publicApi
1295 */
1296export declare interface ConstructorSansProvider {
1297 /**
1298 * A list of `token`s to be resolved by the injector.
1299 */
1300 deps?: any[];
1301}
1302
1303/**
1304 * Type of the ContentChild metadata.
1305 *
1306 * @publicApi
1307 */
1308export declare type ContentChild = Query;
1309
1310/**
1311 * ContentChild decorator and metadata.
1312 *
1313 *
1314 * @Annotation
1315 *
1316 * @publicApi
1317 */
1318export declare const ContentChild: ContentChildDecorator;
1319
1320/**
1321 * Type of the ContentChild decorator / constructor function.
1322 *
1323 * @publicApi
1324 */
1325export declare interface ContentChildDecorator {
1326 /**
1327 * @description
1328 * Property decorator that configures a content query.
1329 *
1330 * Use to get the first element or the directive matching the selector from the content DOM.
1331 * If the content DOM changes, and a new child matches the selector,
1332 * the property will be updated.
1333 *
1334 * Content queries are set before the `ngAfterContentInit` callback is called.
1335 *
1336 * Does not retrieve elements or directives that are in other components' templates,
1337 * since a component's template is always a black box to its ancestors.
1338 *
1339 * **Metadata Properties**:
1340 *
1341 * * **selector** - The directive type or the name used for querying.
1342 * * **read** - Used to read a different token from the queried element.
1343 * * **static** - True to resolve query results before change detection runs,
1344 * false to resolve after change detection. Defaults to false.
1345 *
1346 * The following selectors are supported.
1347 * * Any class with the `@Component` or `@Directive` decorator
1348 * * A template reference variable as a string (e.g. query `<my-component #cmp></my-component>`
1349 * with `@ContentChild('cmp')`)
1350 * * Any provider defined in the child component tree of the current component (e.g.
1351 * `@ContentChild(SomeService) someService: SomeService`)
1352 * * Any provider defined through a string token (e.g. `@ContentChild('someToken') someTokenVal:
1353 * any`)
1354 * * A `TemplateRef` (e.g. query `<ng-template></ng-template>` with `@ContentChild(TemplateRef)
1355 * template;`)
1356 *
1357 * The following values are supported by `read`:
1358 * * Any class with the `@Component` or `@Directive` decorator
1359 * * Any provider defined on the injector of the component that is matched by the `selector` of
1360 * this query
1361 * * Any provider defined through a string token (e.g. `{provide: 'token', useValue: 'val'}`)
1362 * * `TemplateRef`, `ElementRef`, and `ViewContainerRef`
1363 *
1364 * @usageNotes
1365 *
1366 * {@example core/di/ts/contentChild/content_child_howto.ts region='HowTo'}
1367 *
1368 * ### Example
1369 *
1370 * {@example core/di/ts/contentChild/content_child_example.ts region='Component'}
1371 *
1372 * @Annotation
1373 */
1374 (selector: ProviderToken<unknown> | Function | string, opts?: {
1375 read?: any;
1376 static?: boolean;
1377 }): any;
1378 new (selector: ProviderToken<unknown> | Function | string, opts?: {
1379 read?: any;
1380 static?: boolean;
1381 }): ContentChild;
1382}
1383
1384/**
1385 * Type of the ContentChildren metadata.
1386 *
1387 *
1388 * @Annotation
1389 * @publicApi
1390 */
1391export declare type ContentChildren = Query;
1392
1393/**
1394 * ContentChildren decorator and metadata.
1395 *
1396 *
1397 * @Annotation
1398 * @publicApi
1399 */
1400export declare const ContentChildren: ContentChildrenDecorator;
1401
1402/**
1403 * Type of the ContentChildren decorator / constructor function.
1404 *
1405 * @see `ContentChildren`.
1406 * @publicApi
1407 */
1408export declare interface ContentChildrenDecorator {
1409 /**
1410 * @description
1411 * Property decorator that configures a content query.
1412 *
1413 * Use to get the `QueryList` of elements or directives from the content DOM.
1414 * Any time a child element is added, removed, or moved, the query list will be
1415 * updated, and the changes observable of the query list will emit a new value.
1416 *
1417 * Content queries are set before the `ngAfterContentInit` callback is called.
1418 *
1419 * Does not retrieve elements or directives that are in other components' templates,
1420 * since a component's template is always a black box to its ancestors.
1421 *
1422 * **Metadata Properties**:
1423 *
1424 * * **selector** - The directive type or the name used for querying.
1425 * * **descendants** - If `true` include all descendants of the element. If `false` then only
1426 * query direct children of the element.
1427 * * **emitDistinctChangesOnly** - The ` QueryList#changes` observable will emit new values only
1428 * if the QueryList result has changed. When `false` the `changes` observable might emit even
1429 * if the QueryList has not changed.
1430 * ** Note: *** This config option is **deprecated**, it will be permanently set to `true` and
1431 * removed in future versions of Angular.
1432 * * **read** - Used to read a different token from the queried elements.
1433 *
1434 * The following selectors are supported.
1435 * * Any class with the `@Component` or `@Directive` decorator
1436 * * A template reference variable as a string (e.g. query `<my-component #cmp></my-component>`
1437 * with `@ContentChildren('cmp')`)
1438 * * Any provider defined in the child component tree of the current component (e.g.
1439 * `@ContentChildren(SomeService) someService: SomeService`)
1440 * * Any provider defined through a string token (e.g. `@ContentChildren('someToken')
1441 * someTokenVal: any`)
1442 * * A `TemplateRef` (e.g. query `<ng-template></ng-template>` with
1443 * `@ContentChildren(TemplateRef) template;`)
1444 *
1445 * In addition, multiple string selectors can be separated with a comma (e.g.
1446 * `@ContentChildren('cmp1,cmp2')`)
1447 *
1448 * The following values are supported by `read`:
1449 * * Any class with the `@Component` or `@Directive` decorator
1450 * * Any provider defined on the injector of the component that is matched by the `selector` of
1451 * this query
1452 * * Any provider defined through a string token (e.g. `{provide: 'token', useValue: 'val'}`)
1453 * * `TemplateRef`, `ElementRef`, and `ViewContainerRef`
1454 *
1455 * @usageNotes
1456 *
1457 * Here is a simple demonstration of how the `ContentChildren` decorator can be used.
1458 *
1459 * {@example core/di/ts/contentChildren/content_children_howto.ts region='HowTo'}
1460 *
1461 * ### Tab-pane example
1462 *
1463 * Here is a slightly more realistic example that shows how `ContentChildren` decorators
1464 * can be used to implement a tab pane component.
1465 *
1466 * {@example core/di/ts/contentChildren/content_children_example.ts region='Component'}
1467 *
1468 * @Annotation
1469 */
1470 (selector: ProviderToken<unknown> | Function | string, opts?: {
1471 descendants?: boolean;
1472 emitDistinctChangesOnly?: boolean;
1473 read?: any;
1474 }): any;
1475 new (selector: ProviderToken<unknown> | Function | string, opts?: {
1476 descendants?: boolean;
1477 emitDistinctChangesOnly?: boolean;
1478 read?: any;
1479 }): Query;
1480}
1481
1482/**
1483 * Definition of what a content queries function should look like.
1484 */
1485declare type ContentQueriesFunction<T> = <U extends T>(rf: ɵRenderFlags, ctx: U, directiveIndex: number) => void;
1486
1487declare const CONTEXT = 8;
1488
1489/** Options that control how the component should be bootstrapped. */
1490declare interface CreateComponentOptions {
1491 /** Which renderer factory to use. */
1492 rendererFactory?: RendererFactory3;
1493 /** A custom sanitizer instance */
1494 sanitizer?: Sanitizer;
1495 /** A custom animation player handler */
1496 playerHandler?: ɵPlayerHandler;
1497 /**
1498 * Host element on which the component will be bootstrapped. If not specified,
1499 * the component definition's `tag` is used to query the existing DOM for the
1500 * element to bootstrap.
1501 */
1502 host?: RElement | string;
1503 /** Module injector for the component. If unspecified, the injector will be NULL_INJECTOR. */
1504 injector?: Injector;
1505 /**
1506 * List of features to be applied to the created component. Features are simply
1507 * functions that decorate a component with a certain behavior.
1508 *
1509 * Typically, the features in this list are features that cannot be added to the
1510 * other features list in the component definition because they rely on other factors.
1511 *
1512 * Example: `LifecycleHooksFeature` is a function that adds lifecycle hook capabilities
1513 * to root components in a tree-shakable way. It cannot be added to the component
1514 * features list because there's no way of knowing when the component will be used as
1515 * a root component.
1516 */
1517 hostFeatures?: HostFeature[];
1518 /**
1519 * A function which is used to schedule change detection work in the future.
1520 *
1521 * When marking components as dirty, it is necessary to schedule the work of
1522 * change detection in the future. This is done to coalesce multiple
1523 * {@link markDirty} calls into a single changed detection processing.
1524 *
1525 * The default value of the scheduler is the `requestAnimationFrame` function.
1526 *
1527 * It is also useful to override this function for testing purposes.
1528 */
1529 scheduler?: (work: () => void) => void;
1530}
1531
1532/**
1533 * Creates a platform.
1534 * Platforms must be created on launch using this function.
1535 *
1536 * @publicApi
1537 */
1538export declare function createPlatform(injector: Injector): PlatformRef;
1539
1540/**
1541 * Creates a factory for a platform. Can be used to provide or override `Providers` specific to
1542 * your application's runtime needs, such as `PLATFORM_INITIALIZER` and `PLATFORM_ID`.
1543 * @param parentPlatformFactory Another platform factory to modify. Allows you to compose factories
1544 * to build up configurations that might be required by different libraries or parts of the
1545 * application.
1546 * @param name Identifies the new platform factory.
1547 * @param providers A set of dependency providers for platforms created with the new factory.
1548 *
1549 * @publicApi
1550 */
1551export declare function createPlatformFactory(parentPlatformFactory: ((extraProviders?: StaticProvider[]) => PlatformRef) | null, name: string, providers?: StaticProvider[]): (extraProviders?: StaticProvider[]) => PlatformRef;
1552
1553
1554/**
1555 * Expresses a single CSS Selector.
1556 *
1557 * Beginning of array
1558 * - First index: element name
1559 * - Subsequent odd indices: attr keys
1560 * - Subsequent even indices: attr values
1561 *
1562 * After SelectorFlags.CLASS flag
1563 * - Class name values
1564 *
1565 * SelectorFlags.NOT flag
1566 * - Changes the mode to NOT
1567 * - Can be combined with other flags to set the element / attr / class mode
1568 *
1569 * e.g. SelectorFlags.NOT | SelectorFlags.ELEMENT
1570 *
1571 * Example:
1572 * Original: `div.foo.bar[attr1=val1][attr2]`
1573 * Parsed: ['div', 'attr1', 'val1', 'attr2', '', SelectorFlags.CLASS, 'foo', 'bar']
1574 *
1575 * Original: 'div[attr1]:not(.foo[attr2])
1576 * Parsed: [
1577 * 'div', 'attr1', '',
1578 * SelectorFlags.NOT | SelectorFlags.ATTRIBUTE 'attr2', '', SelectorFlags.CLASS, 'foo'
1579 * ]
1580 *
1581 * See more examples in node_selector_matcher_spec.ts
1582 */
1583declare type CssSelector = (string | SelectorFlags)[];
1584
1585/**
1586 * An object literal of this type is used to represent the metadata of a constructor dependency.
1587 * The type itself is never referred to from generated code.
1588 *
1589 * @publicApi
1590 */
1591declare type CtorDependency = {
1592 /**
1593 * If an `@Attribute` decorator is used, this represents the injected attribute's name. If the
1594 * attribute name is a dynamic expression instead of a string literal, this will be the unknown
1595 * type.
1596 */
1597 attribute?: string | unknown;
1598 /**
1599 * If `@Optional()` is used, this key is set to true.
1600 */
1601 optional?: true;
1602 /**
1603 * If `@Host` is used, this key is set to true.
1604 */
1605 host?: true;
1606 /**
1607 * If `@Self` is used, this key is set to true.
1608 */
1609 self?: true;
1610 /**
1611 * If `@SkipSelf` is used, this key is set to true.
1612 */
1613 skipSelf?: true;
1614} | null;
1615
1616/**
1617 * Defines a schema that allows an NgModule to contain the following:
1618 * - Non-Angular elements named with dash case (`-`).
1619 * - Element properties named with dash case (`-`).
1620 * Dash case is the naming convention for custom elements.
1621 *
1622 * @publicApi
1623 */
1624export declare const CUSTOM_ELEMENTS_SCHEMA: SchemaMetadata;
1625
1626/**
1627 * @publicApi
1628 *
1629 * @see [Component testing scenarios](guide/testing-components-scenarios)
1630 * @see [Basics of testing components](guide/testing-components-basics)
1631 * @see [Testing utility APIs](guide/testing-utility-apis)
1632 */
1633export declare interface DebugElement extends DebugNode {
1634 /**
1635 * The element tag name, if it is an element.
1636 */
1637 readonly name: string;
1638 /**
1639 * A map of property names to property values for an element.
1640 *
1641 * This map includes:
1642 * - Regular property bindings (e.g. `[id]="id"`)
1643 * - Host property bindings (e.g. `host: { '[id]': "id" }`)
1644 * - Interpolated property bindings (e.g. `id="{{ value }}")
1645 *
1646 * It does not include:
1647 * - input property bindings (e.g. `[myCustomInput]="value"`)
1648 * - attribute bindings (e.g. `[attr.role]="menu"`)
1649 */
1650 readonly properties: {
1651 [key: string]: any;
1652 };
1653 /**
1654 * A map of attribute names to attribute values for an element.
1655 */
1656 readonly attributes: {
1657 [key: string]: string | null;
1658 };
1659 /**
1660 * A map containing the class names on the element as keys.
1661 *
1662 * This map is derived from the `className` property of the DOM element.
1663 *
1664 * Note: The values of this object will always be `true`. The class key will not appear in the KV
1665 * object if it does not exist on the element.
1666 *
1667 * @see [Element.className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className)
1668 */
1669 readonly classes: {
1670 [key: string]: boolean;
1671 };
1672 /**
1673 * The inline styles of the DOM element.
1674 *
1675 * Will be `null` if there is no `style` property on the underlying DOM element.
1676 *
1677 * @see [ElementCSSInlineStyle](https://developer.mozilla.org/en-US/docs/Web/API/ElementCSSInlineStyle/style)
1678 */
1679 readonly styles: {
1680 [key: string]: string | null;
1681 };
1682 /**
1683 * The `childNodes` of the DOM element as a `DebugNode` array.
1684 *
1685 * @see [Node.childNodes](https://developer.mozilla.org/en-US/docs/Web/API/Node/childNodes)
1686 */
1687 readonly childNodes: DebugNode[];
1688 /**
1689 * The underlying DOM element at the root of the component.
1690 */
1691 readonly nativeElement: any;
1692 /**
1693 * The immediate `DebugElement` children. Walk the tree by descending through `children`.
1694 */
1695 readonly children: DebugElement[];
1696 /**
1697 * @returns the first `DebugElement` that matches the predicate at any depth in the subtree.
1698 */
1699 query(predicate: Predicate<DebugElement>): DebugElement;
1700 /**
1701 * @returns All `DebugElement` matches for the predicate at any depth in the subtree.
1702 */
1703 queryAll(predicate: Predicate<DebugElement>): DebugElement[];
1704 /**
1705 * @returns All `DebugNode` matches for the predicate at any depth in the subtree.
1706 */
1707 queryAllNodes(predicate: Predicate<DebugNode>): DebugNode[];
1708 /**
1709 * Triggers the event by its name if there is a corresponding listener in the element's
1710 * `listeners` collection.
1711 *
1712 * If the event lacks a listener or there's some other problem, consider
1713 * calling `nativeElement.dispatchEvent(eventObject)`.
1714 *
1715 * @param eventName The name of the event to trigger
1716 * @param eventObj The _event object_ expected by the handler
1717 *
1718 * @see [Testing components scenarios](guide/testing-components-scenarios#trigger-event-handler)
1719 */
1720 triggerEventHandler(eventName: string, eventObj: any): void;
1721}
1722
1723/**
1724 * @publicApi
1725 */
1726export declare const DebugElement: {
1727 new (...args: any[]): DebugElement;
1728};
1729
1730declare class DebugElement__POST_R3__ extends DebugNode__POST_R3__ implements DebugElement {
1731 constructor(nativeNode: Element);
1732 get nativeElement(): Element | null;
1733 get name(): string;
1734 /**
1735 * Gets a map of property names to property values for an element.
1736 *
1737 * This map includes:
1738 * - Regular property bindings (e.g. `[id]="id"`)
1739 * - Host property bindings (e.g. `host: { '[id]': "id" }`)
1740 * - Interpolated property bindings (e.g. `id="{{ value }}")
1741 *
1742 * It does not include:
1743 * - input property bindings (e.g. `[myCustomInput]="value"`)
1744 * - attribute bindings (e.g. `[attr.role]="menu"`)
1745 */
1746 get properties(): {
1747 [key: string]: any;
1748 };
1749 get attributes(): {
1750 [key: string]: string | null;
1751 };
1752 get styles(): {
1753 [key: string]: string | null;
1754 };
1755 get classes(): {
1756 [key: string]: boolean;
1757 };
1758 get childNodes(): DebugNode[];
1759 get children(): DebugElement[];
1760 query(predicate: Predicate<DebugElement>): DebugElement;
1761 queryAll(predicate: Predicate<DebugElement>): DebugElement[];
1762 queryAllNodes(predicate: Predicate<DebugNode>): DebugNode[];
1763 triggerEventHandler(eventName: string, eventObj: any): void;
1764}
1765
1766/**
1767 * @publicApi
1768 */
1769export declare class DebugEventListener {
1770 name: string;
1771 callback: Function;
1772 constructor(name: string, callback: Function);
1773}
1774
1775/**
1776 * @publicApi
1777 */
1778export declare interface DebugNode {
1779 /**
1780 * The callbacks attached to the component's @Output properties and/or the element's event
1781 * properties.
1782 */
1783 readonly listeners: DebugEventListener[];
1784 /**
1785 * The `DebugElement` parent. Will be `null` if this is the root element.
1786 */
1787 readonly parent: DebugElement | null;
1788 /**
1789 * The underlying DOM node.
1790 */
1791 readonly nativeNode: any;
1792 /**
1793 * The host dependency injector. For example, the root element's component instance injector.
1794 */
1795 readonly injector: Injector;
1796 /**
1797 * The element's own component instance, if it has one.
1798 */
1799 readonly componentInstance: any;
1800 /**
1801 * An object that provides parent context for this element. Often an ancestor component instance
1802 * that governs this element.
1803 *
1804 * When an element is repeated within *ngFor, the context is an `NgForOf` whose `$implicit`
1805 * property is the value of the row instance value. For example, the `hero` in `*ngFor="let hero
1806 * of heroes"`.
1807 */
1808 readonly context: any;
1809 /**
1810 * Dictionary of objects associated with template local variables (e.g. #foo), keyed by the local
1811 * variable name.
1812 */
1813 readonly references: {
1814 [key: string]: any;
1815 };
1816 /**
1817 * This component's injector lookup tokens. Includes the component itself plus the tokens that the
1818 * component lists in its providers metadata.
1819 */
1820 readonly providerTokens: any[];
1821}
1822
1823/**
1824 * @publicApi
1825 */
1826export declare const DebugNode: {
1827 new (...args: any[]): DebugNode;
1828};
1829
1830/**
1831 * A logical node which comprise into `LView`s.
1832 *
1833 */
1834declare interface DebugNode_2 {
1835 /**
1836 * HTML representation of the node.
1837 */
1838 html: string | null;
1839 /**
1840 * Associated `TNode`
1841 */
1842 tNode: TNode;
1843 /**
1844 * Human readable node type.
1845 */
1846 type: string;
1847 /**
1848 * DOM native node.
1849 */
1850 native: Node;
1851 /**
1852 * Child nodes
1853 */
1854 children: DebugNode_2[];
1855 /**
1856 * A list of Component/Directive types which need to be instantiated an this location.
1857 */
1858 factories: Type<unknown>[];
1859 /**
1860 * A list of Component/Directive instances which were instantiated an this location.
1861 */
1862 instances: unknown[];
1863 /**
1864 * NodeInjector information.
1865 */
1866 injector: NodeInjectorDebug;
1867 /**
1868 * Injector resolution path.
1869 */
1870 injectorResolutionPath: any;
1871}
1872
1873declare class DebugNode__POST_R3__ implements DebugNode {
1874 readonly nativeNode: Node;
1875 constructor(nativeNode: Node);
1876 get parent(): DebugElement | null;
1877 get injector(): Injector;
1878 get componentInstance(): any;
1879 get context(): any;
1880 get listeners(): DebugEventListener[];
1881 get references(): {
1882 [key: string]: any;
1883 };
1884 get providerTokens(): any[];
1885}
1886
1887declare const DECLARATION_COMPONENT_VIEW = 16;
1888
1889declare const DECLARATION_LCONTAINER = 17;
1890
1891declare const DECLARATION_VIEW = 15;
1892
1893/**
1894 * Provide this token to set the default currency code your application uses for
1895 * CurrencyPipe when there is no currency code passed into it. This is only used by
1896 * CurrencyPipe and has no relation to locale currency. Defaults to USD if not configured.
1897 *
1898 * See the [i18n guide](guide/i18n-common-locale-id) for more information.
1899 *
1900 * <div class="alert is-helpful">
1901 *
1902 * **Deprecation notice:**
1903 *
1904 * The default currency code is currently always `USD` but this is deprecated from v9.
1905 *
1906 * **In v10 the default currency code will be taken from the current locale.**
1907 *
1908 * If you need the previous behavior then set it by creating a `DEFAULT_CURRENCY_CODE` provider in
1909 * your application `NgModule`:
1910 *
1911 * ```ts
1912 * {provide: DEFAULT_CURRENCY_CODE, useValue: 'USD'}
1913 * ```
1914 *
1915 * </div>
1916 *
1917 * @usageNotes
1918 * ### Example
1919 *
1920 * ```typescript
1921 * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
1922 * import { AppModule } from './app/app.module';
1923 *
1924 * platformBrowserDynamic().bootstrapModule(AppModule, {
1925 * providers: [{provide: DEFAULT_CURRENCY_CODE, useValue: 'EUR' }]
1926 * });
1927 * ```
1928 *
1929 * @publicApi
1930 */
1931export declare const DEFAULT_CURRENCY_CODE: InjectionToken<string>;
1932
1933/**
1934 * @deprecated v4.0.0 - Should not be part of public API.
1935 * @publicApi
1936 */
1937export declare class DefaultIterableDiffer<V> implements IterableDiffer<V>, IterableChanges<V> {
1938 readonly length: number;
1939 readonly collection: V[] | Iterable<V> | null;
1940 private _linkedRecords;
1941 private _unlinkedRecords;
1942 private _previousItHead;
1943 private _itHead;
1944 private _itTail;
1945 private _additionsHead;
1946 private _additionsTail;
1947 private _movesHead;
1948 private _movesTail;
1949 private _removalsHead;
1950 private _removalsTail;
1951 private _identityChangesHead;
1952 private _identityChangesTail;
1953 private _trackByFn;
1954 constructor(trackByFn?: TrackByFunction<V>);
1955 forEachItem(fn: (record: IterableChangeRecord_<V>) => void): void;
1956 forEachOperation(fn: (item: IterableChangeRecord<V>, previousIndex: number | null, currentIndex: number | null) => void): void;
1957 forEachPreviousItem(fn: (record: IterableChangeRecord_<V>) => void): void;
1958 forEachAddedItem(fn: (record: IterableChangeRecord_<V>) => void): void;
1959 forEachMovedItem(fn: (record: IterableChangeRecord_<V>) => void): void;
1960 forEachRemovedItem(fn: (record: IterableChangeRecord_<V>) => void): void;
1961 forEachIdentityChange(fn: (record: IterableChangeRecord_<V>) => void): void;
1962 diff(collection: NgIterable<V> | null | undefined): DefaultIterableDiffer<V> | null;
1963 onDestroy(): void;
1964 check(collection: NgIterable<V>): boolean;
1965 get isDirty(): boolean;
1966 private _addToRemovals;
1967}
1968
1969/**
1970 * @deprecated in v8, delete after v10. This API should be used only by generated code, and that
1971 * code should now use ɵɵdefineInjectable instead.
1972 * @publicApi
1973 */
1974export declare const defineInjectable: typeof ɵɵdefineInjectable;
1975
1976declare interface Definition<DF extends DefinitionFactory<any>> {
1977 factory: DF | null;
1978}
1979
1980/**
1981 * Factory for ViewDefinitions/NgModuleDefinitions.
1982 * We use a function so we can reexeute it in case an error happens and use the given logger
1983 * function to log the error from the definition of the node, which is shown in all browser
1984 * logs.
1985 */
1986declare interface DefinitionFactory<D extends Definition<any>> {
1987 (logger: NodeLogger): D;
1988}
1989
1990declare interface DepDef {
1991 flags: ɵDepFlags;
1992 token: any;
1993 tokenKey: string;
1994}
1995
1996/**
1997 * Array of destroy hooks that should be executed for a view and their directive indices.
1998 *
1999 * The array is set up as a series of number/function or number/(number|function)[]:
2000 * - Even indices represent the context with which hooks should be called.
2001 * - Odd indices are the hook functions themselves. If a value at an odd index is an array,
2002 * it represents the destroy hooks of a `multi` provider where:
2003 * - Even indices represent the index of the provider for which we've registered a destroy hook,
2004 * inside of the `multi` provider array.
2005 * - Odd indices are the destroy hook functions.
2006 * For example:
2007 * LView: `[0, 1, 2, AService, 4, [BService, CService, DService]]`
2008 * destroyHooks: `[3, AService.ngOnDestroy, 5, [0, BService.ngOnDestroy, 2, DService.ngOnDestroy]]`
2009 *
2010 * In the example above `AService` is a type provider with an `ngOnDestroy`, whereas `BService`,
2011 * `CService` and `DService` are part of a `multi` provider where only `BService` and `DService`
2012 * have an `ngOnDestroy` hook.
2013 */
2014declare type DestroyHookData = (HookEntry | HookData)[];
2015
2016/**
2017 * Destroys the current Angular platform and all Angular applications on the page.
2018 * Destroys all modules and listeners registered with the platform.
2019 *
2020 * @publicApi
2021 */
2022export declare function destroyPlatform(): void;
2023
2024/**
2025 * Directive decorator and metadata.
2026 *
2027 * @Annotation
2028 * @publicApi
2029 */
2030export declare interface Directive {
2031 /**
2032 * The CSS selector that identifies this directive in a template
2033 * and triggers instantiation of the directive.
2034 *
2035 * Declare as one of the following:
2036 *
2037 * - `element-name`: Select by element name.
2038 * - `.class`: Select by class name.
2039 * - `[attribute]`: Select by attribute name.
2040 * - `[attribute=value]`: Select by attribute name and value.
2041 * - `:not(sub_selector)`: Select only if the element does not match the `sub_selector`.
2042 * - `selector1, selector2`: Select if either `selector1` or `selector2` matches.
2043 *
2044 * Angular only allows directives to apply on CSS selectors that do not cross
2045 * element boundaries.
2046 *
2047 * For the following template HTML, a directive with an `input[type=text]` selector,
2048 * would be instantiated only on the `<input type="text">` element.
2049 *
2050 * ```html
2051 * <form>
2052 * <input type="text">
2053 * <input type="radio">
2054 * <form>
2055 * ```
2056 *
2057 */
2058 selector?: string;
2059 /**
2060 * Enumerates the set of data-bound input properties for a directive
2061 *
2062 * Angular automatically updates input properties during change detection.
2063 * The `inputs` property defines a set of `directiveProperty` to `bindingProperty`
2064 * configuration:
2065 *
2066 * - `directiveProperty` specifies the component property where the value is written.
2067 * - `bindingProperty` specifies the DOM property where the value is read from.
2068 *
2069 * When `bindingProperty` is not provided, it is assumed to be equal to `directiveProperty`.
2070 *
2071 * @usageNotes
2072 *
2073 * The following example creates a component with two data-bound properties.
2074 *
2075 * ```typescript
2076 * @Component({
2077 * selector: 'bank-account',
2078 * inputs: ['bankName', 'id: account-id'],
2079 * template: `
2080 * Bank Name: {{bankName}}
2081 * Account Id: {{id}}
2082 * `
2083 * })
2084 * class BankAccount {
2085 * bankName: string;
2086 * id: string;
2087 * }
2088 * ```
2089 *
2090 */
2091 inputs?: string[];
2092 /**
2093 * Enumerates the set of event-bound output properties.
2094 *
2095 * When an output property emits an event, an event handler attached to that event
2096 * in the template is invoked.
2097 *
2098 * The `outputs` property defines a set of `directiveProperty` to `bindingProperty`
2099 * configuration:
2100 *
2101 * - `directiveProperty` specifies the component property that emits events.
2102 * - `bindingProperty` specifies the DOM property the event handler is attached to.
2103 *
2104 * @usageNotes
2105 *
2106 * ```typescript
2107 * @Component({
2108 * selector: 'child-dir',
2109 * outputs: [ 'bankNameChange' ]
2110 * template: `<input (input)="bankNameChange.emit($event.target.value)" />`
2111 * })
2112 * class ChildDir {
2113 * bankNameChange: EventEmitter<string> = new EventEmitter<string>();
2114 * }
2115 *
2116 * @Component({
2117 * selector: 'main',
2118 * template: `
2119 * {{ bankName }} <child-dir (bankNameChange)="onBankNameChange($event)"></child-dir>
2120 * `
2121 * })
2122 * class MainComponent {
2123 * bankName: string;
2124 *
2125 * onBankNameChange(bankName: string) {
2126 * this.bankName = bankName;
2127 * }
2128 * }
2129 * ```
2130 *
2131 */
2132 outputs?: string[];
2133 /**
2134 * Configures the [injector](guide/glossary#injector) of this
2135 * directive or component with a [token](guide/glossary#di-token)
2136 * that maps to a [provider](guide/glossary#provider) of a dependency.
2137 */
2138 providers?: Provider[];
2139 /**
2140 * Defines the name that can be used in the template to assign this directive to a variable.
2141 *
2142 * @usageNotes
2143 *
2144 * ```ts
2145 * @Directive({
2146 * selector: 'child-dir',
2147 * exportAs: 'child'
2148 * })
2149 * class ChildDir {
2150 * }
2151 *
2152 * @Component({
2153 * selector: 'main',
2154 * template: `<child-dir #c="child"></child-dir>`
2155 * })
2156 * class MainComponent {
2157 * }
2158 * ```
2159 *
2160 */
2161 exportAs?: string;
2162 /**
2163 * Configures the queries that will be injected into the directive.
2164 *
2165 * Content queries are set before the `ngAfterContentInit` callback is called.
2166 * View queries are set before the `ngAfterViewInit` callback is called.
2167 *
2168 * @usageNotes
2169 *
2170 * The following example shows how queries are defined
2171 * and when their results are available in lifecycle hooks:
2172 *
2173 * ```ts
2174 * @Component({
2175 * selector: 'someDir',
2176 * queries: {
2177 * contentChildren: new ContentChildren(ChildDirective),
2178 * viewChildren: new ViewChildren(ChildDirective)
2179 * },
2180 * template: '<child-directive></child-directive>'
2181 * })
2182 * class SomeDir {
2183 * contentChildren: QueryList<ChildDirective>,
2184 * viewChildren: QueryList<ChildDirective>
2185 *
2186 * ngAfterContentInit() {
2187 * // contentChildren is set
2188 * }
2189 *
2190 * ngAfterViewInit() {
2191 * // viewChildren is set
2192 * }
2193 * }
2194 * ```
2195 *
2196 * @Annotation
2197 */
2198 queries?: {
2199 [key: string]: any;
2200 };
2201 /**
2202 * Maps class properties to host element bindings for properties,
2203 * attributes, and events, using a set of key-value pairs.
2204 *
2205 * Angular automatically checks host property bindings during change detection.
2206 * If a binding changes, Angular updates the directive's host element.
2207 *
2208 * When the key is a property of the host element, the property value is
2209 * the propagated to the specified DOM property.
2210 *
2211 * When the key is a static attribute in the DOM, the attribute value
2212 * is propagated to the specified property in the host element.
2213 *
2214 * For event handling:
2215 * - The key is the DOM event that the directive listens to.
2216 * To listen to global events, add the target to the event name.
2217 * The target can be `window`, `document` or `body`.
2218 * - The value is the statement to execute when the event occurs. If the
2219 * statement evaluates to `false`, then `preventDefault` is applied on the DOM
2220 * event. A handler method can refer to the `$event` local variable.
2221 *
2222 */
2223 host?: {
2224 [key: string]: string;
2225 };
2226 /**
2227 * When present, this directive/component is ignored by the AOT compiler.
2228 * It remains in distributed code, and the JIT compiler attempts to compile it
2229 * at run time, in the browser.
2230 * To ensure the correct behavior, the app must import `@angular/compiler`.
2231 */
2232 jit?: true;
2233}
2234
2235/**
2236 * Type of the Directive metadata.
2237 *
2238 * @publicApi
2239 */
2240export declare const Directive: DirectiveDecorator;
2241
2242/**
2243 * Type of the Directive decorator / constructor function.
2244 * @publicApi
2245 */
2246export declare interface DirectiveDecorator {
2247 /**
2248 * Decorator that marks a class as an Angular directive.
2249 * You can define your own directives to attach custom behavior to elements in the DOM.
2250 *
2251 * The options provide configuration metadata that determines
2252 * how the directive should be processed, instantiated and used at
2253 * runtime.
2254 *
2255 * Directive classes, like component classes, can implement
2256 * [life-cycle hooks](guide/lifecycle-hooks) to influence their configuration and behavior.
2257 *
2258 *
2259 * @usageNotes
2260 * To define a directive, mark the class with the decorator and provide metadata.
2261 *
2262 * ```ts
2263 * import {Directive} from '@angular/core';
2264 *
2265 * @Directive({
2266 * selector: 'my-directive',
2267 * })
2268 * export class MyDirective {
2269 * ...
2270 * }
2271 * ```
2272 *
2273 * ### Declaring directives
2274 *
2275 * Directives are [declarables](guide/glossary#declarable).
2276 * They must be declared by an NgModule
2277 * in order to be usable in an app.
2278 *
2279 * A directive must belong to exactly one NgModule. Do not re-declare
2280 * a directive imported from another module.
2281 * List the directive class in the `declarations` field of an NgModule.
2282 *
2283 * ```ts
2284 * declarations: [
2285 * AppComponent,
2286 * MyDirective
2287 * ],
2288 * ```
2289 *
2290 * @Annotation
2291 */
2292 (obj?: Directive): TypeDecorator;
2293 /**
2294 * See the `Directive` decorator.
2295 */
2296 new (obj?: Directive): Directive;
2297}
2298
2299declare interface DirectiveDefFeature {
2300 <T>(directiveDef: ɵDirectiveDef<T>): void;
2301 /**
2302 * Marks a feature as something that {@link InheritDefinitionFeature} will execute
2303 * during inheritance.
2304 *
2305 * NOTE: DO NOT SET IN ROOT OF MODULE! Doing so will result in tree-shakers/bundlers
2306 * identifying the change as a side effect, and the feature will be included in
2307 * every bundle.
2308 */
2309 ngInherit?: true;
2310}
2311
2312declare type DirectiveDefList = (ɵDirectiveDef<any> | ɵComponentDef<any>)[];
2313
2314/**
2315 * Type used for directiveDefs on component definition.
2316 *
2317 * The function is necessary to be able to support forward declarations.
2318 */
2319declare type DirectiveDefListOrFactory = (() => DirectiveDefList) | DirectiveDefList;
2320
2321declare type DirectiveInstance = {};
2322
2323declare type DirectiveTypeList = (ɵDirectiveType<any> | ɵComponentType<any> | Type<any>)[];
2324
2325declare type DirectiveTypesOrFactory = (() => DirectiveTypeList) | DirectiveTypeList;
2326
2327declare interface DisposableFn {
2328 (): void;
2329}
2330
2331/**
2332 * @description
2333 * Hook for manual bootstrapping of the application instead of using `bootstrap` array in @NgModule
2334 * annotation. This hook is invoked only when the `bootstrap` array is empty or not provided.
2335 *
2336 * Reference to the current application is provided as a parameter.
2337 *
2338 * See ["Bootstrapping"](guide/bootstrapping) and ["Entry components"](guide/entry-components).
2339 *
2340 * @usageNotes
2341 * The example below uses `ApplicationRef.bootstrap()` to render the
2342 * `AppComponent` on the page.
2343 *
2344 * ```typescript
2345 * class AppModule implements DoBootstrap {
2346 * ngDoBootstrap(appRef: ApplicationRef) {
2347 * appRef.bootstrap(AppComponent); // Or some other component
2348 * }
2349 * }
2350 * ```
2351 *
2352 * @publicApi
2353 */
2354export declare interface DoBootstrap {
2355 ngDoBootstrap(appRef: ApplicationRef): void;
2356}
2357
2358/**
2359 * A lifecycle hook that invokes a custom change-detection function for a directive,
2360 * in addition to the check performed by the default change-detector.
2361 *
2362 * The default change-detection algorithm looks for differences by comparing
2363 * bound-property values by reference across change detection runs. You can use this
2364 * hook to check for and respond to changes by some other means.
2365 *
2366 * When the default change detector detects changes, it invokes `ngOnChanges()` if supplied,
2367 * regardless of whether you perform additional change detection.
2368 * Typically, you should not use both `DoCheck` and `OnChanges` to respond to
2369 * changes on the same input.
2370 *
2371 * @see `OnChanges`
2372 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
2373 *
2374 * @usageNotes
2375 * The following snippet shows how a component can implement this interface
2376 * to invoke it own change-detection cycle.
2377 *
2378 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='DoCheck'}
2379 *
2380 * For a more complete example and discussion, see
2381 * [Defining custom change detection](guide/lifecycle-hooks#defining-custom-change-detection).
2382 *
2383 * @publicApi
2384 */
2385export declare interface DoCheck {
2386 /**
2387 * A callback method that performs change-detection, invoked
2388 * after the default change-detector runs.
2389 * See `KeyValueDiffers` and `IterableDiffers` for implementing
2390 * custom change checking for collections.
2391 *
2392 */
2393 ngDoCheck(): void;
2394}
2395
2396/**
2397 * Marks that the next string is an element name.
2398 *
2399 * See `I18nMutateOpCodes` documentation.
2400 */
2401declare const ELEMENT_MARKER: ELEMENT_MARKER;
2402
2403declare interface ELEMENT_MARKER {
2404 marker: 'element';
2405}
2406
2407declare interface ElementDef {
2408 name: string | null;
2409 ns: string | null;
2410 /** ns, name, value */
2411 attrs: [string, string, string][] | null;
2412 template: ɵViewDefinition | null;
2413 componentProvider: NodeDef | null;
2414 componentRendererType: RendererType2 | null;
2415 componentView: ViewDefinitionFactory | null;
2416 /**
2417 * visible public providers for DI in the view,
2418 * as see from this element. This does not include private providers.
2419 */
2420 publicProviders: {
2421 [tokenKey: string]: NodeDef;
2422 } | null;
2423 /**
2424 * same as visiblePublicProviders, but also includes private providers
2425 * that are located on this element.
2426 */
2427 allProviders: {
2428 [tokenKey: string]: NodeDef;
2429 } | null;
2430 handleEvent: ElementHandleEventFn | null;
2431}
2432
2433declare interface ElementHandleEventFn {
2434 (view: ViewData, eventName: string, event: any): boolean;
2435}
2436
2437/**
2438 * A wrapper around a native element inside of a View.
2439 *
2440 * An `ElementRef` is backed by a render-specific element. In the browser, this is usually a DOM
2441 * element.
2442 *
2443 * @security Permitting direct access to the DOM can make your application more vulnerable to
2444 * XSS attacks. Carefully review any use of `ElementRef` in your code. For more detail, see the
2445 * [Security Guide](https://g.co/ng/security).
2446 *
2447 * @publicApi
2448 */
2449export declare class ElementRef<T = any> {
2450 /**
2451 * The underlying native element or `null` if direct access to native elements is not supported
2452 * (e.g. when the application runs in a web worker).
2453 *
2454 * <div class="callout is-critical">
2455 * <header>Use with caution</header>
2456 * <p>
2457 * Use this API as the last resort when direct access to DOM is needed. Use templating and
2458 * data-binding provided by Angular instead. Alternatively you can take a look at {@link
2459 * Renderer2}
2460 * which provides API that can safely be used even when direct access to native elements is not
2461 * supported.
2462 * </p>
2463 * <p>
2464 * Relying on direct DOM access creates tight coupling between your application and rendering
2465 * layers which will make it impossible to separate the two and deploy your application into a
2466 * web worker.
2467 * </p>
2468 * </div>
2469 *
2470 */
2471 nativeElement: T;
2472 constructor(nativeElement: T);
2473}
2474
2475/**
2476 * Represents an Angular [view](guide/glossary#view) in a view container.
2477 * An [embedded view](guide/glossary#view-tree) can be referenced from a component
2478 * other than the hosting component whose template defines it, or it can be defined
2479 * independently by a `TemplateRef`.
2480 *
2481 * Properties of elements in a view can change, but the structure (number and order) of elements in
2482 * a view cannot. Change the structure of elements by inserting, moving, or
2483 * removing nested views in a view container.
2484 *
2485 * @see `ViewContainerRef`
2486 *
2487 * @usageNotes
2488 *
2489 * The following template breaks down into two separate `TemplateRef` instances,
2490 * an outer one and an inner one.
2491 *
2492 * ```
2493 * Count: {{items.length}}
2494 * <ul>
2495 * <li *ngFor="let item of items">{{item}}</li>
2496 * </ul>
2497 * ```
2498 *
2499 * This is the outer `TemplateRef`:
2500 *
2501 * ```
2502 * Count: {{items.length}}
2503 * <ul>
2504 * <ng-template ngFor let-item [ngForOf]="items"></ng-template>
2505 * </ul>
2506 * ```
2507 *
2508 * This is the inner `TemplateRef`:
2509 *
2510 * ```
2511 * <li>{{item}}</li>
2512 * ```
2513 *
2514 * The outer and inner `TemplateRef` instances are assembled into views as follows:
2515 *
2516 * ```
2517 * <!-- ViewRef: outer-0 -->
2518 * Count: 2
2519 * <ul>
2520 * <ng-template view-container-ref></ng-template>
2521 * <!-- ViewRef: inner-1 --><li>first</li><!-- /ViewRef: inner-1 -->
2522 * <!-- ViewRef: inner-2 --><li>second</li><!-- /ViewRef: inner-2 -->
2523 * </ul>
2524 * <!-- /ViewRef: outer-0 -->
2525 * ```
2526 * @publicApi
2527 */
2528export declare abstract class EmbeddedViewRef<C> extends ViewRef {
2529 /**
2530 * The context for this view, inherited from the anchor element.
2531 */
2532 abstract context: C;
2533 /**
2534 * The root nodes for this embedded view.
2535 */
2536 abstract get rootNodes(): any[];
2537}
2538
2539/**
2540 * Disable Angular's development mode, which turns off assertions and other
2541 * checks within the framework.
2542 *
2543 * One important assertion this disables verifies that a change detection pass
2544 * does not result in additional changes to any bindings (also known as
2545 * unidirectional data flow).
2546 *
2547 * @publicApi
2548 */
2549export declare function enableProdMode(): void;
2550
2551
2552/**
2553 * Provides a hook for centralized exception handling.
2554 *
2555 * The default implementation of `ErrorHandler` prints error messages to the `console`. To
2556 * intercept error handling, write a custom exception handler that replaces this default as
2557 * appropriate for your app.
2558 *
2559 * @usageNotes
2560 * ### Example
2561 *
2562 * ```
2563 * class MyErrorHandler implements ErrorHandler {
2564 * handleError(error) {
2565 * // do something with the exception
2566 * }
2567 * }
2568 *
2569 * @NgModule({
2570 * providers: [{provide: ErrorHandler, useClass: MyErrorHandler}]
2571 * })
2572 * class MyModule {}
2573 * ```
2574 *
2575 * @publicApi
2576 */
2577export declare class ErrorHandler {
2578 handleError(error: any): void;
2579}
2580
2581/**
2582 * Use in components with the `@Output` directive to emit custom events
2583 * synchronously or asynchronously, and register handlers for those events
2584 * by subscribing to an instance.
2585 *
2586 * @usageNotes
2587 *
2588 * Extends
2589 * [RxJS `Subject`](https://rxjs.dev/api/index/class/Subject)
2590 * for Angular by adding the `emit()` method.
2591 *
2592 * In the following example, a component defines two output properties
2593 * that create event emitters. When the title is clicked, the emitter
2594 * emits an open or close event to toggle the current visibility state.
2595 *
2596 * ```html
2597 * @Component({
2598 * selector: 'zippy',
2599 * template: `
2600 * <div class="zippy">
2601 * <div (click)="toggle()">Toggle</div>
2602 * <div [hidden]="!visible">
2603 * <ng-content></ng-content>
2604 * </div>
2605 * </div>`})
2606 * export class Zippy {
2607 * visible: boolean = true;
2608 * @Output() open: EventEmitter<any> = new EventEmitter();
2609 * @Output() close: EventEmitter<any> = new EventEmitter();
2610 *
2611 * toggle() {
2612 * this.visible = !this.visible;
2613 * if (this.visible) {
2614 * this.open.emit(null);
2615 * } else {
2616 * this.close.emit(null);
2617 * }
2618 * }
2619 * }
2620 * ```
2621 *
2622 * Access the event object with the `$event` argument passed to the output event
2623 * handler:
2624 *
2625 * ```html
2626 * <zippy (open)="onOpen($event)" (close)="onClose($event)"></zippy>
2627 * ```
2628 *
2629 * @see [Observables in Angular](guide/observables-in-angular)
2630 * @publicApi
2631 */
2632export declare interface EventEmitter<T> extends Subject<T> {
2633 /**
2634 * Creates an instance of this class that can
2635 * deliver events synchronously or asynchronously.
2636 *
2637 * @param [isAsync=false] When true, deliver events asynchronously.
2638 *
2639 */
2640 new (isAsync?: boolean): EventEmitter<T>;
2641 /**
2642 * Emits an event containing a given value.
2643 * @param value The value to emit.
2644 */
2645 emit(value?: T): void;
2646 /**
2647 * Registers handlers for events emitted by this instance.
2648 * @param next When supplied, a custom handler for emitted events.
2649 * @param error When supplied, a custom handler for an error notification from this emitter.
2650 * @param complete When supplied, a custom handler for a completion notification from this
2651 * emitter.
2652 */
2653 subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
2654 /**
2655 * Registers handlers for events emitted by this instance.
2656 * @param observerOrNext When supplied, a custom handler for emitted events, or an observer
2657 * object.
2658 * @param error When supplied, a custom handler for an error notification from this emitter.
2659 * @param complete When supplied, a custom handler for a completion notification from this
2660 * emitter.
2661 */
2662 subscribe(observerOrNext?: any, error?: any, complete?: any): Subscription;
2663}
2664
2665/**
2666 * @publicApi
2667 */
2668export declare const EventEmitter: {
2669 new (isAsync?: boolean): EventEmitter<any>;
2670 new <T>(isAsync?: boolean): EventEmitter<T>;
2671 readonly prototype: EventEmitter<any>;
2672};
2673
2674/**
2675 * Configures the `Injector` to return a value of another `useExisting` token.
2676 *
2677 * @see ["Dependency Injection Guide"](guide/dependency-injection).
2678 *
2679 * @usageNotes
2680 *
2681 * {@example core/di/ts/provider_spec.ts region='ExistingProvider'}
2682 *
2683 * ### Multi-value example
2684 *
2685 * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
2686 *
2687 * @publicApi
2688 */
2689export declare interface ExistingProvider extends ExistingSansProvider {
2690 /**
2691 * An injection token. Typically an instance of `Type` or `InjectionToken`, but can be `any`.
2692 */
2693 provide: any;
2694 /**
2695 * When true, injector returns an array of instances. This is useful to allow multiple
2696 * providers spread across many files to provide configuration information to a common token.
2697 */
2698 multi?: boolean;
2699}
2700
2701/**
2702 * Configures the `Injector` to return a value of another `useExisting` token.
2703 *
2704 * @see `ExistingProvider`
2705 * @see ["Dependency Injection Guide"](guide/dependency-injection).
2706 *
2707 * @publicApi
2708 */
2709export declare interface ExistingSansProvider {
2710 /**
2711 * Existing `token` to return. (Equivalent to `injector.get(useExisting)`)
2712 */
2713 useExisting: any;
2714}
2715
2716/**
2717 * Definition of what a factory function should look like.
2718 */
2719declare type FactoryFn<T> = {
2720 /**
2721 * Subclasses without an explicit constructor call through to the factory of their base
2722 * definition, providing it with their own constructor to instantiate.
2723 */
2724 <U extends T>(t?: Type<U>): U;
2725 /**
2726 * If no constructor to instantiate is provided, an instance of type T itself is created.
2727 */
2728 (t?: undefined): T;
2729};
2730
2731/**
2732 * Configures the `Injector` to return a value by invoking a `useFactory` function.
2733 * @see ["Dependency Injection Guide"](guide/dependency-injection).
2734 *
2735 * @usageNotes
2736 *
2737 * {@example core/di/ts/provider_spec.ts region='FactoryProvider'}
2738 *
2739 * Dependencies can also be marked as optional:
2740 *
2741 * {@example core/di/ts/provider_spec.ts region='FactoryProviderOptionalDeps'}
2742 *
2743 * ### Multi-value example
2744 *
2745 * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
2746 *
2747 * @publicApi
2748 */
2749export declare interface FactoryProvider extends FactorySansProvider {
2750 /**
2751 * An injection token. (Typically an instance of `Type` or `InjectionToken`, but can be `any`).
2752 */
2753 provide: any;
2754 /**
2755 * When true, injector returns an array of instances. This is useful to allow multiple
2756 * providers spread across many files to provide configuration information to a common token.
2757 */
2758 multi?: boolean;
2759}
2760
2761/**
2762 * Configures the `Injector` to return a value by invoking a `useFactory` function.
2763 *
2764 * @see `FactoryProvider`
2765 * @see ["Dependency Injection Guide"](guide/dependency-injection).
2766 *
2767 * @publicApi
2768 */
2769export declare interface FactorySansProvider {
2770 /**
2771 * A function to invoke to create a value for this `token`. The function is invoked with
2772 * resolved values of `token`s in the `deps` field.
2773 */
2774 useFactory: Function;
2775 /**
2776 * A list of `token`s to be resolved by the injector. The list of values is then
2777 * used as arguments to the `useFactory` function.
2778 */
2779 deps?: any[];
2780}
2781
2782declare const FLAGS = 2;
2783
2784/**
2785 * Allows to refer to references which are not yet defined.
2786 *
2787 * For instance, `forwardRef` is used when the `token` which we need to refer to for the purposes of
2788 * DI is declared, but not yet defined. It is also used when the `token` which we use when creating
2789 * a query is not yet defined.
2790 *
2791 * @usageNotes
2792 * ### Example
2793 * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='forward_ref'}
2794 * @publicApi
2795 */
2796export declare function forwardRef(forwardRefFn: ForwardRefFn): Type<any>;
2797
2798/**
2799 * An interface that a function passed into {@link forwardRef} has to implement.
2800 *
2801 * @usageNotes
2802 * ### Example
2803 *
2804 * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='forward_ref_fn'}
2805 * @publicApi
2806 */
2807export declare interface ForwardRefFn {
2808 (): any;
2809}
2810
2811/**
2812 * @publicApi
2813 */
2814export declare const getDebugNode: (nativeNode: any) => DebugNode | null;
2815
2816/**
2817 * Returns the NgModuleFactory with the given id, if it exists and has been loaded.
2818 * Factories for modules that do not specify an `id` cannot be retrieved. Throws if the module
2819 * cannot be found.
2820 * @publicApi
2821 */
2822export declare const getModuleFactory: (id: string) => NgModuleFactory<any>;
2823
2824/**
2825 * Returns the current platform.
2826 *
2827 * @publicApi
2828 */
2829export declare function getPlatform(): PlatformRef | null;
2830
2831/**
2832 * Adapter interface for retrieving the `Testability` service associated for a
2833 * particular context.
2834 *
2835 * @publicApi
2836 */
2837export declare interface GetTestability {
2838 addToWindow(registry: TestabilityRegistry): void;
2839 findTestabilityInTree(registry: TestabilityRegistry, elem: any, findInAncestors: boolean): Testability | null;
2840}
2841
2842declare type GlobalTargetName = 'document' | 'window' | 'body';
2843
2844declare type GlobalTargetResolver = (element: any) => EventTarget;
2845
2846/**
2847 * Flag to signify that this `LContainer` may have transplanted views which need to be change
2848 * detected. (see: `LView[DECLARATION_COMPONENT_VIEW])`.
2849 *
2850 * This flag, once set, is never unset for the `LContainer`. This means that when unset we can skip
2851 * a lot of work in `refreshEmbeddedViews`. But when set we still need to verify
2852 * that the `MOVED_VIEWS` are transplanted and on-push.
2853 */
2854declare const HAS_TRANSPLANTED_VIEWS = 2;
2855
2856/**
2857 * Array of hooks that should be executed for a view and their directive indices.
2858 *
2859 * For each node of the view, the following data is stored:
2860 * 1) Node index (optional)
2861 * 2) A series of number/function pairs where:
2862 * - even indices are directive indices
2863 * - odd indices are hook functions
2864 *
2865 * Special cases:
2866 * - a negative directive index flags an init hook (ngOnInit, ngAfterContentInit, ngAfterViewInit)
2867 */
2868declare type HookData = HookEntry[];
2869
2870/**
2871 * Information necessary to call a hook. E.g. the callback that
2872 * needs to invoked and the index at which to find its context.
2873 */
2874declare type HookEntry = number | HookFn;
2875
2876/** Single hook callback function. */
2877declare type HookFn = () => void;
2878
2879declare const HOST = 0;
2880
2881/**
2882 * Type of the Host metadata.
2883 *
2884 * @publicApi
2885 */
2886export declare interface Host {
2887}
2888
2889/**
2890 * Host decorator and metadata.
2891 *
2892 * @Annotation
2893 * @publicApi
2894 */
2895export declare const Host: HostDecorator;
2896
2897/**
2898 * Type of the HostBinding metadata.
2899 *
2900 * @publicApi
2901 */
2902export declare interface HostBinding {
2903 /**
2904 * The DOM property that is bound to a data property.
2905 */
2906 hostPropertyName?: string;
2907}
2908
2909/**
2910 * @Annotation
2911 * @publicApi
2912 */
2913export declare const HostBinding: HostBindingDecorator;
2914
2915/**
2916 * Type of the HostBinding decorator / constructor function.
2917 *
2918 * @publicApi
2919 */
2920export declare interface HostBindingDecorator {
2921 /**
2922 * Decorator that marks a DOM property as a host-binding property and supplies configuration
2923 * metadata.
2924 * Angular automatically checks host property bindings during change detection, and
2925 * if a binding changes it updates the host element of the directive.
2926 *
2927 * @usageNotes
2928 *
2929 * The following example creates a directive that sets the `valid` and `invalid`
2930 * properties on the DOM element that has an `ngModel` directive on it.
2931 *
2932 * ```typescript
2933 * @Directive({selector: '[ngModel]'})
2934 * class NgModelStatus {
2935 * constructor(public control: NgModel) {}
2936 * @HostBinding('class.valid') get valid() { return this.control.valid; }
2937 * @HostBinding('class.invalid') get invalid() { return this.control.invalid; }
2938 * }
2939 *
2940 * @Component({
2941 * selector: 'app',
2942 * template: `<input [(ngModel)]="prop">`,
2943 * })
2944 * class App {
2945 * prop;
2946 * }
2947 * ```
2948 *
2949 */
2950 (hostPropertyName?: string): any;
2951 new (hostPropertyName?: string): any;
2952}
2953
2954/**
2955 * Stores a set of OpCodes to process `HostBindingsFunction` associated with a current view.
2956 *
2957 * In order to invoke `HostBindingsFunction` we need:
2958 * 1. 'elementIdx`: Index to the element associated with the `HostBindingsFunction`.
2959 * 2. 'directiveIdx`: Index to the directive associated with the `HostBindingsFunction`. (This will
2960 * become the context for the `HostBindingsFunction` invocation.)
2961 * 3. `bindingRootIdx`: Location where the bindings for the `HostBindingsFunction` start. Internally
2962 * `HostBindingsFunction` binding indexes start from `0` so we need to add `bindingRootIdx` to
2963 * it.
2964 * 4. `HostBindingsFunction`: A host binding function to execute.
2965 *
2966 * The above information needs to be encoded into the `HostBindingOpCodes` in an efficient manner.
2967 *
2968 * 1. `elementIdx` is encoded into the `HostBindingOpCodes` as `~elementIdx` (so a negative number);
2969 * 2. `directiveIdx`
2970 * 3. `bindingRootIdx`
2971 * 4. `HostBindingsFunction` is passed in as is.
2972 *
2973 * The `HostBindingOpCodes` array contains:
2974 * - negative number to select the element index.
2975 * - followed by 1 or more of:
2976 * - a number to select the directive index
2977 * - a number to select the bindingRoot index
2978 * - and a function to invoke.
2979 *
2980 * ## Example
2981 *
2982 * ```
2983 * const hostBindingOpCodes = [
2984 * ~30, // Select element 30
2985 * 40, 45, MyDir.ɵdir.hostBindings // Invoke host bindings on MyDir on element 30;
2986 * // directiveIdx = 40; bindingRootIdx = 45;
2987 * 50, 55, OtherDir.ɵdir.hostBindings // Invoke host bindings on OtherDire on element 30
2988 * // directiveIdx = 50; bindingRootIdx = 55;
2989 * ]
2990 * ```
2991 *
2992 * ## Pseudocode
2993 * ```
2994 * const hostBindingOpCodes = tView.hostBindingOpCodes;
2995 * if (hostBindingOpCodes === null) return;
2996 * for (let i = 0; i < hostBindingOpCodes.length; i++) {
2997 * const opCode = hostBindingOpCodes[i] as number;
2998 * if (opCode < 0) {
2999 * // Negative numbers are element indexes.
3000 * setSelectedIndex(~opCode);
3001 * } else {
3002 * // Positive numbers are NumberTuple which store bindingRootIndex and directiveIndex.
3003 * const directiveIdx = opCode;
3004 * const bindingRootIndx = hostBindingOpCodes[++i] as number;
3005 * const hostBindingFn = hostBindingOpCodes[++i] as HostBindingsFunction<any>;
3006 * setBindingRootForHostBindings(bindingRootIndx, directiveIdx);
3007 * const context = lView[directiveIdx];
3008 * hostBindingFn(RenderFlags.Update, context);
3009 * }
3010 * }
3011 * ```
3012 *
3013 */
3014declare interface HostBindingOpCodes extends Array<number | HostBindingsFunction<any>> {
3015 __brand__: 'HostBindingOpCodes';
3016 debug?: string[];
3017}
3018
3019declare type HostBindingsFunction<T> = <U extends T>(rf: ɵRenderFlags, ctx: U) => void;
3020
3021/**
3022 * Type of the `Host` decorator / constructor function.
3023 *
3024 * @publicApi
3025 */
3026export declare interface HostDecorator {
3027 /**
3028 * Parameter decorator on a view-provider parameter of a class constructor
3029 * that tells the DI framework to resolve the view by checking injectors of child
3030 * elements, and stop when reaching the host element of the current component.
3031 *
3032 * @usageNotes
3033 *
3034 * The following shows use with the `@Optional` decorator, and allows for a `null` result.
3035 *
3036 * <code-example path="core/di/ts/metadata_spec.ts" region="Host">
3037 * </code-example>
3038 *
3039 * For an extended example, see ["Dependency Injection
3040 * Guide"](guide/dependency-injection-in-action#optional).
3041 */
3042 (): any;
3043 new (): Host;
3044}
3045
3046/** See CreateComponentOptions.hostFeatures */
3047declare type HostFeature = (<T>(component: T, componentDef: ɵComponentDef<T>) => void);
3048
3049/**
3050 * Type of the HostListener metadata.
3051 *
3052 * @publicApi
3053 */
3054export declare interface HostListener {
3055 /**
3056 * The DOM event to listen for.
3057 */
3058 eventName?: string;
3059 /**
3060 * A set of arguments to pass to the handler method when the event occurs.
3061 */
3062 args?: string[];
3063}
3064
3065/**
3066 * Decorator that binds a DOM event to a host listener and supplies configuration metadata.
3067 * Angular invokes the supplied handler method when the host element emits the specified event,
3068 * and updates the bound element with the result.
3069 *
3070 * If the handler method returns false, applies `preventDefault` on the bound element.
3071 *
3072 * @usageNotes
3073 *
3074 * The following example declares a directive
3075 * that attaches a click listener to a button and counts clicks.
3076 *
3077 * ```ts
3078 * @Directive({selector: 'button[counting]'})
3079 * class CountClicks {
3080 * numberOfClicks = 0;
3081 *
3082 * @HostListener('click', ['$event.target'])
3083 * onClick(btn) {
3084 * console.log('button', btn, 'number of clicks:', this.numberOfClicks++);
3085 * }
3086 * }
3087 *
3088 * @Component({
3089 * selector: 'app',
3090 * template: '<button counting>Increment</button>',
3091 * })
3092 * class App {}
3093 *
3094 * ```
3095 *
3096 * The following example registers another DOM event handler that listens for key-press events.
3097 * ``` ts
3098 * import { HostListener, Component } from "@angular/core";
3099 *
3100 * @Component({
3101 * selector: 'app',
3102 * template: `<h1>Hello, you have pressed keys {{counter}} number of times!</h1> Press any key to
3103 * increment the counter.
3104 * <button (click)="resetCounter()">Reset Counter</button>`
3105 * })
3106 * class AppComponent {
3107 * counter = 0;
3108 * @HostListener('window:keydown', ['$event'])
3109 * handleKeyDown(event: KeyboardEvent) {
3110 * this.counter++;
3111 * }
3112 * resetCounter() {
3113 * this.counter = 0;
3114 * }
3115 * }
3116 * ```
3117 *
3118 * @Annotation
3119 * @publicApi
3120 */
3121export declare const HostListener: HostListenerDecorator;
3122
3123/**
3124 * Type of the HostListener decorator / constructor function.
3125 *
3126 * @publicApi
3127 */
3128export declare interface HostListenerDecorator {
3129 /**
3130 * Decorator that declares a DOM event to listen for,
3131 * and provides a handler method to run when that event occurs.
3132 *
3133 * Angular invokes the supplied handler method when the host element emits the specified event,
3134 * and updates the bound element with the result.
3135 *
3136 * If the handler method returns false, applies `preventDefault` on the bound element.
3137 */
3138 (eventName: string, args?: string[]): any;
3139 new (eventName: string, args?: string[]): any;
3140}
3141
3142/**
3143 * Array storing OpCode for dynamically creating `i18n` translation DOM elements.
3144 *
3145 * This array creates a sequence of `Text` and `Comment` (as ICU anchor) DOM elements. It consists
3146 * of a pair of `number` and `string` pairs which encode the operations for the creation of the
3147 * translated block.
3148 *
3149 * The number is shifted and encoded according to `I18nCreateOpCode`
3150 *
3151 * Pseudocode:
3152 * ```
3153 * const i18nCreateOpCodes = [
3154 * 10 << I18nCreateOpCode.SHIFT, "Text Node add to DOM",
3155 * 11 << I18nCreateOpCode.SHIFT | I18nCreateOpCode.COMMENT, "Comment Node add to DOM",
3156 * 12 << I18nCreateOpCode.SHIFT | I18nCreateOpCode.APPEND_LATER, "Text Node added later"
3157 * ];
3158 *
3159 * for(var i=0; i<i18nCreateOpCodes.length; i++) {
3160 * const opcode = i18NCreateOpCodes[i++];
3161 * const index = opcode >> I18nCreateOpCode.SHIFT;
3162 * const text = i18NCreateOpCodes[i];
3163 * let node: Text|Comment;
3164 * if (opcode & I18nCreateOpCode.COMMENT === I18nCreateOpCode.COMMENT) {
3165 * node = lView[~index] = document.createComment(text);
3166 * } else {
3167 * node = lView[index] = document.createText(text);
3168 * }
3169 * if (opcode & I18nCreateOpCode.APPEND_EAGERLY !== I18nCreateOpCode.APPEND_EAGERLY) {
3170 * parentNode.appendChild(node);
3171 * }
3172 * }
3173 * ```
3174 */
3175declare interface I18nCreateOpCodes extends Array<number | string>, I18nDebug {
3176 __brand__: 'I18nCreateOpCodes';
3177}
3178
3179declare interface I18nDebug {
3180 /**
3181 * Human readable representation of the OpCode arrays.
3182 *
3183 * NOTE: This property only exists if `ngDevMode` is set to `true` and it is not present in
3184 * production. Its presence is purely to help debug issue in development, and should not be relied
3185 * on in production application.
3186 */
3187 debug?: string[];
3188}
3189
3190/**
3191 * Stores a list of nodes which need to be removed.
3192 *
3193 * Numbers are indexes into the `LView`
3194 * - index > 0: `removeRNode(lView[0])`
3195 * - index < 0: `removeICU(~lView[0])`
3196 */
3197declare interface I18nRemoveOpCodes extends Array<number> {
3198 __brand__: 'I18nRemoveOpCodes';
3199}
3200
3201/**
3202 * Stores DOM operations which need to be applied to update DOM render tree due to changes in
3203 * expressions.
3204 *
3205 * The basic idea is that `i18nExp` OpCodes capture expression changes and update a change
3206 * mask bit. (Bit 1 for expression 1, bit 2 for expression 2 etc..., bit 32 for expression 32 and
3207 * higher.) The OpCodes then compare its own change mask against the expression change mask to
3208 * determine if the OpCodes should execute.
3209 *
3210 * NOTE: 32nd bit is special as it says 32nd or higher. This way if we have more than 32 bindings
3211 * the code still works, but with lower efficiency. (it is unlikely that a translation would have
3212 * more than 32 bindings.)
3213 *
3214 * These OpCodes can be used by both the i18n block as well as ICU sub-block.
3215 *
3216 * ## Example
3217 *
3218 * Assume
3219 * ```ts
3220 * if (rf & RenderFlags.Update) {
3221 * i18nExp(ctx.exp1); // If changed set mask bit 1
3222 * i18nExp(ctx.exp2); // If changed set mask bit 2
3223 * i18nExp(ctx.exp3); // If changed set mask bit 3
3224 * i18nExp(ctx.exp4); // If changed set mask bit 4
3225 * i18nApply(0); // Apply all changes by executing the OpCodes.
3226 * }
3227 * ```
3228 * We can assume that each call to `i18nExp` sets an internal `changeMask` bit depending on the
3229 * index of `i18nExp`.
3230 *
3231 * ### OpCodes
3232 * ```ts
3233 * <I18nUpdateOpCodes>[
3234 * // The following OpCodes represent: `<div i18n-title="pre{{exp1}}in{{exp2}}post">`
3235 * // If `changeMask & 0b11`
3236 * // has changed then execute update OpCodes.
3237 * // has NOT changed then skip `8` values and start processing next OpCodes.
3238 * 0b11, 8,
3239 * // Concatenate `newValue = 'pre'+lView[bindIndex-4]+'in'+lView[bindIndex-3]+'post';`.
3240 * 'pre', -4, 'in', -3, 'post',
3241 * // Update attribute: `elementAttribute(1, 'title', sanitizerFn(newValue));`
3242 * 1 << SHIFT_REF | Attr, 'title', sanitizerFn,
3243 *
3244 * // The following OpCodes represent: `<div i18n>Hello {{exp3}}!">`
3245 * // If `changeMask & 0b100`
3246 * // has changed then execute update OpCodes.
3247 * // has NOT changed then skip `4` values and start processing next OpCodes.
3248 * 0b100, 4,
3249 * // Concatenate `newValue = 'Hello ' + lView[bindIndex -2] + '!';`.
3250 * 'Hello ', -2, '!',
3251 * // Update text: `lView[1].textContent = newValue;`
3252 * 1 << SHIFT_REF | Text,
3253 *
3254 * // The following OpCodes represent: `<div i18n>{exp4, plural, ... }">`
3255 * // If `changeMask & 0b1000`
3256 * // has changed then execute update OpCodes.
3257 * // has NOT changed then skip `2` values and start processing next OpCodes.
3258 * 0b1000, 2,
3259 * // Concatenate `newValue = lView[bindIndex -1];`.
3260 * -1,
3261 * // Switch ICU: `icuSwitchCase(lView[1], 0, newValue);`
3262 * 0 << SHIFT_ICU | 1 << SHIFT_REF | IcuSwitch,
3263 *
3264 * // Note `changeMask & -1` is always true, so the IcuUpdate will always execute.
3265 * -1, 1,
3266 * // Update ICU: `icuUpdateCase(lView[1], 0);`
3267 * 0 << SHIFT_ICU | 1 << SHIFT_REF | IcuUpdate,
3268 *
3269 * ];
3270 * ```
3271 *
3272 */
3273declare interface I18nUpdateOpCodes extends Array<string | number | SanitizerFn | null>, I18nDebug {
3274 __brand__: 'I18nUpdateOpCodes';
3275}
3276
3277/**
3278 * Marks that the next string is comment text need for ICU.
3279 *
3280 * See `I18nMutateOpCodes` documentation.
3281 */
3282declare const ICU_MARKER: ICU_MARKER;
3283
3284declare interface ICU_MARKER {
3285 marker: 'ICU';
3286}
3287
3288/**
3289 * Array storing OpCode for dynamically creating `i18n` blocks.
3290 *
3291 * Example:
3292 * ```ts
3293 * <I18nCreateOpCode>[
3294 * // For adding text nodes
3295 * // ---------------------
3296 * // Equivalent to:
3297 * // lView[1].appendChild(lView[0] = document.createTextNode('xyz'));
3298 * 'xyz', 0, 1 << SHIFT_PARENT | 0 << SHIFT_REF | AppendChild,
3299 *
3300 * // For adding element nodes
3301 * // ---------------------
3302 * // Equivalent to:
3303 * // lView[1].appendChild(lView[0] = document.createElement('div'));
3304 * ELEMENT_MARKER, 'div', 0, 1 << SHIFT_PARENT | 0 << SHIFT_REF | AppendChild,
3305 *
3306 * // For adding comment nodes
3307 * // ---------------------
3308 * // Equivalent to:
3309 * // lView[1].appendChild(lView[0] = document.createComment(''));
3310 * ICU_MARKER, '', 0, 1 << SHIFT_PARENT | 0 << SHIFT_REF | AppendChild,
3311 *
3312 * // For moving existing nodes to a different location
3313 * // --------------------------------------------------
3314 * // Equivalent to:
3315 * // const node = lView[1];
3316 * // lView[2].appendChild(node);
3317 * 1 << SHIFT_REF | Select, 2 << SHIFT_PARENT | 0 << SHIFT_REF | AppendChild,
3318 *
3319 * // For removing existing nodes
3320 * // --------------------------------------------------
3321 * // const node = lView[1];
3322 * // removeChild(tView.data(1), node, lView);
3323 * 1 << SHIFT_REF | Remove,
3324 *
3325 * // For writing attributes
3326 * // --------------------------------------------------
3327 * // const node = lView[1];
3328 * // node.setAttribute('attr', 'value');
3329 * 1 << SHIFT_REF | Attr, 'attr', 'value'
3330 * ];
3331 * ```
3332 */
3333declare interface IcuCreateOpCodes extends Array<number | string | ELEMENT_MARKER | ICU_MARKER | null>, I18nDebug {
3334 __brand__: 'I18nCreateOpCodes';
3335}
3336
3337/**
3338 * Defines the ICU type of `select` or `plural`
3339 */
3340declare const enum IcuType {
3341 select = 0,
3342 plural = 1
3343}
3344
3345/**
3346 * This array contains information about input properties that
3347 * need to be set once from attribute data. It's ordered by
3348 * directive index (relative to element) so it's simple to
3349 * look up a specific directive's initial input data.
3350 *
3351 * Within each sub-array:
3352 *
3353 * i+0: attribute name
3354 * i+1: minified/internal input name
3355 * i+2: initial value
3356 *
3357 * If a directive on a node does not have any input properties
3358 * that should be set from attributes, its index is set to null
3359 * to avoid a sparse array.
3360 *
3361 * e.g. [null, ['role-min', 'minified-input', 'button']]
3362 */
3363declare type InitialInputData = (InitialInputs | null)[];
3364
3365/**
3366 * Used by InitialInputData to store input properties
3367 * that should be set once from attributes.
3368 *
3369 * i+0: attribute name
3370 * i+1: minified/internal input name
3371 * i+2: initial value
3372 *
3373 * e.g. ['role-min', 'minified-input', 'button']
3374 */
3375declare type InitialInputs = string[];
3376
3377/**
3378 * Type of the Inject metadata.
3379 *
3380 * @publicApi
3381 */
3382export declare interface Inject {
3383 /**
3384 * A [DI token](guide/glossary#di-token) that maps to the dependency to be injected.
3385 */
3386 token: any;
3387}
3388
3389/**
3390 * Inject decorator and metadata.
3391 *
3392 * @Annotation
3393 * @publicApi
3394 */
3395export declare const Inject: InjectDecorator;
3396
3397/**
3398 * Injects a token from the currently active injector.
3399 *
3400 * Must be used in the context of a factory function such as one defined for an
3401 * `InjectionToken`. Throws an error if not called from such a context.
3402 *
3403 * Within such a factory function, using this function to request injection of a dependency
3404 * is faster and more type-safe than providing an additional array of dependencies
3405 * (as has been common with `useFactory` providers).
3406 *
3407 * @param token The injection token for the dependency to be injected.
3408 * @param flags Optional flags that control how injection is executed.
3409 * The flags correspond to injection strategies that can be specified with
3410 * parameter decorators `@Host`, `@Self`, `@SkipSef`, and `@Optional`.
3411 * @returns the injected value if injection is successful, `null` otherwise.
3412 *
3413 * @usageNotes
3414 *
3415 * ### Example
3416 *
3417 * {@example core/di/ts/injector_spec.ts region='ShakableInjectionToken'}
3418 *
3419 * @publicApi
3420 */
3421export declare const inject: typeof ɵɵinject;
3422
3423/**
3424 * Type of the Injectable metadata.
3425 *
3426 * @publicApi
3427 */
3428export declare interface Injectable {
3429 /**
3430 * Determines which injectors will provide the injectable.
3431 *
3432 * - `Type<any>` - associates the injectable with an `@NgModule` or other `InjectorType`,
3433 * - 'null' : Equivalent to `undefined`. The injectable is not provided in any scope automatically
3434 * and must be added to a `providers` array of an [@NgModule](api/core/NgModule#providers),
3435 * [@Component](api/core/Directive#providers) or [@Directive](api/core/Directive#providers).
3436 *
3437 * The following options specify that this injectable should be provided in one of the following
3438 * injectors:
3439 * - 'root' : The application-level injector in most apps.
3440 * - 'platform' : A special singleton platform injector shared by all
3441 * applications on the page.
3442 * - 'any' : Provides a unique instance in each lazy loaded module while all eagerly loaded
3443 * modules share one instance.
3444 *
3445 */
3446 providedIn?: Type<any> | 'root' | 'platform' | 'any' | null;
3447}
3448
3449/**
3450 * Injectable decorator and metadata.
3451 *
3452 * @Annotation
3453 * @publicApi
3454 */
3455export declare const Injectable: InjectableDecorator;
3456
3457/**
3458 * Type of the Injectable decorator / constructor function.
3459 *
3460 * @publicApi
3461 */
3462export declare interface InjectableDecorator {
3463 /**
3464 * Decorator that marks a class as available to be
3465 * provided and injected as a dependency.
3466 *
3467 * @see [Introduction to Services and DI](guide/architecture-services)
3468 * @see [Dependency Injection Guide](guide/dependency-injection)
3469 *
3470 * @usageNotes
3471 *
3472 * Marking a class with `@Injectable` ensures that the compiler
3473 * will generate the necessary metadata to create the class's
3474 * dependencies when the class is injected.
3475 *
3476 * The following example shows how a service class is properly
3477 * marked so that a supporting service can be injected upon creation.
3478 *
3479 * <code-example path="core/di/ts/metadata_spec.ts" region="Injectable"></code-example>
3480 *
3481 */
3482 (): TypeDecorator;
3483 (options?: {
3484 providedIn: Type<any> | 'root' | 'platform' | 'any' | null;
3485 } & InjectableProvider): TypeDecorator;
3486 new (): Injectable;
3487 new (options?: {
3488 providedIn: Type<any> | 'root' | 'platform' | 'any' | null;
3489 } & InjectableProvider): Injectable;
3490}
3491
3492/**
3493 * Injectable providers used in `@Injectable` decorator.
3494 *
3495 * @publicApi
3496 */
3497export declare type InjectableProvider = ValueSansProvider | ExistingSansProvider | StaticClassSansProvider | ConstructorSansProvider | FactorySansProvider | ClassSansProvider;
3498
3499/**
3500 * A `Type` which has a `ɵprov: ɵɵInjectableDeclaration` static field.
3501 *
3502 * `InjectableType`s contain their own Dependency Injection metadata and are usable in an
3503 * `InjectorDef`-based `StaticInjector.
3504 *
3505 * @publicApi
3506 */
3507export declare interface InjectableType<T> extends Type<T> {
3508 /**
3509 * Opaque type whose structure is highly version dependent. Do not rely on any properties.
3510 */
3511 ɵprov: unknown;
3512}
3513
3514
3515/**
3516 * Type of the Inject decorator / constructor function.
3517 *
3518 * @publicApi
3519 */
3520export declare interface InjectDecorator {
3521 /**
3522 * Parameter decorator on a dependency parameter of a class constructor
3523 * that specifies a custom provider of the dependency.
3524 *
3525 * @usageNotes
3526 * The following example shows a class constructor that specifies a
3527 * custom provider of a dependency using the parameter decorator.
3528 *
3529 * When `@Inject()` is not present, the injector uses the type annotation of the
3530 * parameter as the provider.
3531 *
3532 * <code-example path="core/di/ts/metadata_spec.ts" region="InjectWithoutDecorator">
3533 * </code-example>
3534 *
3535 * @see ["Dependency Injection Guide"](guide/dependency-injection)
3536 *
3537 */
3538 (token: any): any;
3539 new (token: any): Inject;
3540}
3541
3542/**
3543 * Injection flags for DI.
3544 *
3545 * @publicApi
3546 */
3547export declare enum InjectFlags {
3548 /** Check self and check parent injector if needed */
3549 Default = 0,
3550 /**
3551 * Specifies that an injector should retrieve a dependency from any injector until reaching the
3552 * host element of the current component. (Only used with Element Injector)
3553 */
3554 Host = 1,
3555 /** Don't ascend to ancestors of the node requesting injection. */
3556 Self = 2,
3557 /** Skip the node that is requesting injection. */
3558 SkipSelf = 4,
3559 /** Inject `defaultValue` instead if token not found. */
3560 Optional = 8
3561}
3562
3563/**
3564 * Creates a token that can be used in a DI Provider.
3565 *
3566 * Use an `InjectionToken` whenever the type you are injecting is not reified (does not have a
3567 * runtime representation) such as when injecting an interface, callable type, array or
3568 * parameterized type.
3569 *
3570 * `InjectionToken` is parameterized on `T` which is the type of object which will be returned by
3571 * the `Injector`. This provides an additional level of type safety.
3572 *
3573 * ```
3574 * interface MyInterface {...}
3575 * const myInterface = injector.get(new InjectionToken<MyInterface>('SomeToken'));
3576 * // myInterface is inferred to be MyInterface.
3577 * ```
3578 *
3579 * When creating an `InjectionToken`, you can optionally specify a factory function which returns
3580 * (possibly by creating) a default value of the parameterized type `T`. This sets up the
3581 * `InjectionToken` using this factory as a provider as if it was defined explicitly in the
3582 * application's root injector. If the factory function, which takes zero arguments, needs to inject
3583 * dependencies, it can do so using the `inject` function.
3584 * As you can see in the Tree-shakable InjectionToken example below.
3585 *
3586 * Additionally, if a `factory` is specified you can also specify the `providedIn` option, which
3587 * overrides the above behavior and marks the token as belonging to a particular `@NgModule`. As
3588 * mentioned above, `'root'` is the default value for `providedIn`.
3589 *
3590 * @usageNotes
3591 * ### Basic Examples
3592 *
3593 * ### Plain InjectionToken
3594 *
3595 * {@example core/di/ts/injector_spec.ts region='InjectionToken'}
3596 *
3597 * ### Tree-shakable InjectionToken
3598 *
3599 * {@example core/di/ts/injector_spec.ts region='ShakableInjectionToken'}
3600 *
3601 *
3602 * @publicApi
3603 */
3604export declare class InjectionToken<T> {
3605 protected _desc: string;
3606 readonly ɵprov: unknown;
3607 /**
3608 * @param _desc Description for the token,
3609 * used only for debugging purposes,
3610 * it should but does not need to be unique
3611 * @param options Options for the token's usage, as described above
3612 */
3613 constructor(_desc: string, options?: {
3614 providedIn?: Type<any> | 'root' | 'platform' | 'any' | null;
3615 factory: () => T;
3616 });
3617 toString(): string;
3618}
3619
3620/**
3621 * An InjectionToken that gets the current `Injector` for `createInjector()`-style injectors.
3622 *
3623 * Requesting this token instead of `Injector` allows `StaticInjector` to be tree-shaken from a
3624 * project.
3625 *
3626 * @publicApi
3627 */
3628export declare const INJECTOR: InjectionToken<Injector>;
3629
3630/**
3631 * Concrete injectors implement this interface. Injectors are configured
3632 * with [providers](guide/glossary#provider) that associate
3633 * dependencies of various types with [injection tokens](guide/glossary#di-token).
3634 *
3635 * @see ["DI Providers"](guide/dependency-injection-providers).
3636 * @see `StaticProvider`
3637 *
3638 * @usageNotes
3639 *
3640 * The following example creates a service injector instance.
3641 *
3642 * {@example core/di/ts/provider_spec.ts region='ConstructorProvider'}
3643 *
3644 * ### Usage example
3645 *
3646 * {@example core/di/ts/injector_spec.ts region='Injector'}
3647 *
3648 * `Injector` returns itself when given `Injector` as a token:
3649 *
3650 * {@example core/di/ts/injector_spec.ts region='injectInjector'}
3651 *
3652 * @publicApi
3653 */
3654export declare abstract class Injector {
3655 static THROW_IF_NOT_FOUND: {};
3656 static NULL: Injector;
3657 /**
3658 * Retrieves an instance from the injector based on the provided token.
3659 * @returns The instance from the injector if defined, otherwise the `notFoundValue`.
3660 * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`.
3661 */
3662 abstract get<T>(token: ProviderToken<T>, notFoundValue?: T, flags?: InjectFlags): T;
3663 /**
3664 * @deprecated from v4.0.0 use ProviderToken<T>
3665 * @suppress {duplicate}
3666 */
3667 abstract get(token: any, notFoundValue?: any): any;
3668 /**
3669 * @deprecated from v5 use the new signature Injector.create(options)
3670 */
3671 static create(providers: StaticProvider[], parent?: Injector): Injector;
3672 /**
3673 * Creates a new injector instance that provides one or more dependencies,
3674 * according to a given type or types of `StaticProvider`.
3675 *
3676 * @param options An object with the following properties:
3677 * * `providers`: An array of providers of the [StaticProvider type](api/core/StaticProvider).
3678 * * `parent`: (optional) A parent injector.
3679 * * `name`: (optional) A developer-defined identifying name for the new injector.
3680 *
3681 * @returns The new injector instance.
3682 *
3683 */
3684 static create(options: {
3685 providers: StaticProvider[];
3686 parent?: Injector;
3687 name?: string;
3688 }): Injector;
3689 /** @nocollapse */
3690 static ɵprov: unknown;
3691}
3692
3693declare const INJECTOR_2 = 9;
3694
3695/**
3696 * A type which has an `InjectorDef` static field.
3697 *
3698 * `InjectorTypes` can be used to configure a `StaticInjector`.
3699 *
3700 * This is an opaque type whose structure is highly version dependent. Do not rely on any
3701 * properties.
3702 *
3703 * @publicApi
3704 */
3705export declare interface InjectorType<T> extends Type<T> {
3706 ɵfac?: unknown;
3707 ɵinj: unknown;
3708}
3709
3710/**
3711 * Describes the `InjectorDef` equivalent of a `ModuleWithProviders`, an `InjectorType` with an
3712 * associated array of providers.
3713 *
3714 * Objects of this type can be listed in the imports section of an `InjectorDef`.
3715 *
3716 * NOTE: This is a private type and should not be exported
3717 */
3718declare interface InjectorTypeWithProviders<T> {
3719 ngModule: InjectorType<T>;
3720 providers?: (Type<any> | ValueProvider | ExistingProvider | FactoryProvider | ConstructorProvider | StaticClassProvider | ClassProvider | any[])[];
3721}
3722
3723/**
3724 * Type of metadata for an `Input` property.
3725 *
3726 * @publicApi
3727 */
3728export declare interface Input {
3729 /**
3730 * The name of the DOM property to which the input property is bound.
3731 */
3732 bindingPropertyName?: string;
3733}
3734
3735/**
3736 * @Annotation
3737 * @publicApi
3738 */
3739export declare const Input: InputDecorator;
3740
3741/**
3742 * @publicApi
3743 */
3744export declare interface InputDecorator {
3745 /**
3746 * Decorator that marks a class field as an input property and supplies configuration metadata.
3747 * The input property is bound to a DOM property in the template. During change detection,
3748 * Angular automatically updates the data property with the DOM property's value.
3749 *
3750 * @usageNotes
3751 *
3752 * You can supply an optional name to use in templates when the
3753 * component is instantiated, that maps to the
3754 * name of the bound property. By default, the original
3755 * name of the bound property is used for input binding.
3756 *
3757 * The following example creates a component with two input properties,
3758 * one of which is given a special binding name.
3759 *
3760 * ```typescript
3761 * @Component({
3762 * selector: 'bank-account',
3763 * template: `
3764 * Bank Name: {{bankName}}
3765 * Account Id: {{id}}
3766 * `
3767 * })
3768 * class BankAccount {
3769 * // This property is bound using its original name.
3770 * @Input() bankName: string;
3771 * // this property value is bound to a different property name
3772 * // when this component is instantiated in a template.
3773 * @Input('account-id') id: string;
3774 *
3775 * // this property is not bound, and is not automatically updated by Angular
3776 * normalizedBankName: string;
3777 * }
3778 *
3779 * @Component({
3780 * selector: 'app',
3781 * template: `
3782 * <bank-account bankName="RBC" account-id="4747"></bank-account>
3783 * `
3784 * })
3785 * class App {}
3786 * ```
3787 *
3788 * @see [Input and Output properties](guide/inputs-outputs)
3789 */
3790 (bindingPropertyName?: string): any;
3791 new (bindingPropertyName?: string): any;
3792}
3793
3794/**
3795 * See `TNode.insertBeforeIndex`
3796 */
3797declare type InsertBeforeIndex = null | number | number[];
3798
3799declare interface InternalNgModuleRef<T> extends NgModuleRef<T> {
3800 _bootstrapComponents: Type<any>[];
3801}
3802
3803declare interface InternalViewRef extends ViewRef {
3804 detachFromAppRef(): void;
3805 attachToAppRef(appRef: ViewRefTracker): void;
3806}
3807
3808
3809/**
3810 * Returns whether Angular is in development mode. After called once,
3811 * the value is locked and won't change any more.
3812 *
3813 * By default, this is true, unless a user calls `enableProdMode` before calling this.
3814 *
3815 * @publicApi
3816 */
3817export declare function isDevMode(): boolean;
3818
3819/**
3820 * Record representing the item change information.
3821 *
3822 * @publicApi
3823 */
3824export declare interface IterableChangeRecord<V> {
3825 /** Current index of the item in `Iterable` or null if removed. */
3826 readonly currentIndex: number | null;
3827 /** Previous index of the item in `Iterable` or null if added. */
3828 readonly previousIndex: number | null;
3829 /** The item. */
3830 readonly item: V;
3831 /** Track by identity as computed by the `TrackByFunction`. */
3832 readonly trackById: any;
3833}
3834
3835declare class IterableChangeRecord_<V> implements IterableChangeRecord<V> {
3836 item: V;
3837 trackById: any;
3838 currentIndex: number | null;
3839 previousIndex: number | null;
3840 constructor(item: V, trackById: any);
3841}
3842
3843/**
3844 * An object describing the changes in the `Iterable` collection since last time
3845 * `IterableDiffer#diff()` was invoked.
3846 *
3847 * @publicApi
3848 */
3849export declare interface IterableChanges<V> {
3850 /**
3851 * Iterate over all changes. `IterableChangeRecord` will contain information about changes
3852 * to each item.
3853 */
3854 forEachItem(fn: (record: IterableChangeRecord<V>) => void): void;
3855 /**
3856 * Iterate over a set of operations which when applied to the original `Iterable` will produce the
3857 * new `Iterable`.
3858 *
3859 * NOTE: These are not necessarily the actual operations which were applied to the original
3860 * `Iterable`, rather these are a set of computed operations which may not be the same as the
3861 * ones applied.
3862 *
3863 * @param record A change which needs to be applied
3864 * @param previousIndex The `IterableChangeRecord#previousIndex` of the `record` refers to the
3865 * original `Iterable` location, where as `previousIndex` refers to the transient location
3866 * of the item, after applying the operations up to this point.
3867 * @param currentIndex The `IterableChangeRecord#currentIndex` of the `record` refers to the
3868 * original `Iterable` location, where as `currentIndex` refers to the transient location
3869 * of the item, after applying the operations up to this point.
3870 */
3871 forEachOperation(fn: (record: IterableChangeRecord<V>, previousIndex: number | null, currentIndex: number | null) => void): void;
3872 /**
3873 * Iterate over changes in the order of original `Iterable` showing where the original items
3874 * have moved.
3875 */
3876 forEachPreviousItem(fn: (record: IterableChangeRecord<V>) => void): void;
3877 /** Iterate over all added items. */
3878 forEachAddedItem(fn: (record: IterableChangeRecord<V>) => void): void;
3879 /** Iterate over all moved items. */
3880 forEachMovedItem(fn: (record: IterableChangeRecord<V>) => void): void;
3881 /** Iterate over all removed items. */
3882 forEachRemovedItem(fn: (record: IterableChangeRecord<V>) => void): void;
3883 /**
3884 * Iterate over all items which had their identity (as computed by the `TrackByFunction`)
3885 * changed.
3886 */
3887 forEachIdentityChange(fn: (record: IterableChangeRecord<V>) => void): void;
3888}
3889
3890/**
3891 * A strategy for tracking changes over time to an iterable. Used by {@link NgForOf} to
3892 * respond to changes in an iterable by effecting equivalent changes in the DOM.
3893 *
3894 * @publicApi
3895 */
3896export declare interface IterableDiffer<V> {
3897 /**
3898 * Compute a difference between the previous state and the new `object` state.
3899 *
3900 * @param object containing the new value.
3901 * @returns an object describing the difference. The return value is only valid until the next
3902 * `diff()` invocation.
3903 */
3904 diff(object: NgIterable<V> | undefined | null): IterableChanges<V> | null;
3905}
3906
3907/**
3908 * Provides a factory for {@link IterableDiffer}.
3909 *
3910 * @publicApi
3911 */
3912export declare interface IterableDifferFactory {
3913 supports(objects: any): boolean;
3914 create<V>(trackByFn?: TrackByFunction<V>): IterableDiffer<V>;
3915}
3916
3917/**
3918 * A repository of different iterable diffing strategies used by NgFor, NgClass, and others.
3919 *
3920 * @publicApi
3921 */
3922export declare class IterableDiffers {
3923 /** @nocollapse */
3924 static ɵprov: unknown;
3925 /**
3926 * @deprecated v4.0.0 - Should be private
3927 */
3928 factories: IterableDifferFactory[];
3929 constructor(factories: IterableDifferFactory[]);
3930 static create(factories: IterableDifferFactory[], parent?: IterableDiffers): IterableDiffers;
3931 /**
3932 * Takes an array of {@link IterableDifferFactory} and returns a provider used to extend the
3933 * inherited {@link IterableDiffers} instance with the provided factories and return a new
3934 * {@link IterableDiffers} instance.
3935 *
3936 * @usageNotes
3937 * ### Example
3938 *
3939 * The following example shows how to extend an existing list of factories,
3940 * which will only be applied to the injector for this component and its children.
3941 * This step is all that's required to make a new {@link IterableDiffer} available.
3942 *
3943 * ```
3944 * @Component({
3945 * viewProviders: [
3946 * IterableDiffers.extend([new ImmutableListDiffer()])
3947 * ]
3948 * })
3949 * ```
3950 */
3951 static extend(factories: IterableDifferFactory[]): StaticProvider;
3952 find(iterable: any): IterableDifferFactory;
3953}
3954
3955/**
3956 * `KeyValueArray` is an array where even positions contain keys and odd positions contain values.
3957 *
3958 * `KeyValueArray` provides a very efficient way of iterating over its contents. For small
3959 * sets (~10) the cost of binary searching an `KeyValueArray` has about the same performance
3960 * characteristics that of a `Map` with significantly better memory footprint.
3961 *
3962 * If used as a `Map` the keys are stored in alphabetical order so that they can be binary searched
3963 * for retrieval.
3964 *
3965 * See: `keyValueArraySet`, `keyValueArrayGet`, `keyValueArrayIndexOf`, `keyValueArrayDelete`.
3966 */
3967declare interface KeyValueArray<VALUE> extends Array<VALUE | string> {
3968 __brand__: 'array-map';
3969}
3970
3971/**
3972 * Record representing the item change information.
3973 *
3974 * @publicApi
3975 */
3976export declare interface KeyValueChangeRecord<K, V> {
3977 /**
3978 * Current key in the Map.
3979 */
3980 readonly key: K;
3981 /**
3982 * Current value for the key or `null` if removed.
3983 */
3984 readonly currentValue: V | null;
3985 /**
3986 * Previous value for the key or `null` if added.
3987 */
3988 readonly previousValue: V | null;
3989}
3990
3991/**
3992 * An object describing the changes in the `Map` or `{[k:string]: string}` since last time
3993 * `KeyValueDiffer#diff()` was invoked.
3994 *
3995 * @publicApi
3996 */
3997export declare interface KeyValueChanges<K, V> {
3998 /**
3999 * Iterate over all changes. `KeyValueChangeRecord` will contain information about changes
4000 * to each item.
4001 */
4002 forEachItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;
4003 /**
4004 * Iterate over changes in the order of original Map showing where the original items
4005 * have moved.
4006 */
4007 forEachPreviousItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;
4008 /**
4009 * Iterate over all keys for which values have changed.
4010 */
4011 forEachChangedItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;
4012 /**
4013 * Iterate over all added items.
4014 */
4015 forEachAddedItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;
4016 /**
4017 * Iterate over all removed items.
4018 */
4019 forEachRemovedItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;
4020}
4021
4022/**
4023 * A differ that tracks changes made to an object over time.
4024 *
4025 * @publicApi
4026 */
4027export declare interface KeyValueDiffer<K, V> {
4028 /**
4029 * Compute a difference between the previous state and the new `object` state.
4030 *
4031 * @param object containing the new value.
4032 * @returns an object describing the difference. The return value is only valid until the next
4033 * `diff()` invocation.
4034 */
4035 diff(object: Map<K, V>): KeyValueChanges<K, V> | null;
4036 /**
4037 * Compute a difference between the previous state and the new `object` state.
4038 *
4039 * @param object containing the new value.
4040 * @returns an object describing the difference. The return value is only valid until the next
4041 * `diff()` invocation.
4042 */
4043 diff(object: {
4044 [key: string]: V;
4045 }): KeyValueChanges<string, V> | null;
4046}
4047
4048/**
4049 * Provides a factory for {@link KeyValueDiffer}.
4050 *
4051 * @publicApi
4052 */
4053export declare interface KeyValueDifferFactory {
4054 /**
4055 * Test to see if the differ knows how to diff this kind of object.
4056 */
4057 supports(objects: any): boolean;
4058 /**
4059 * Create a `KeyValueDiffer`.
4060 */
4061 create<K, V>(): KeyValueDiffer<K, V>;
4062}
4063
4064/**
4065 * A repository of different Map diffing strategies used by NgClass, NgStyle, and others.
4066 *
4067 * @publicApi
4068 */
4069export declare class KeyValueDiffers {
4070 /** @nocollapse */
4071 static ɵprov: unknown;
4072 /**
4073 * @deprecated v4.0.0 - Should be private.
4074 */
4075 factories: KeyValueDifferFactory[];
4076 constructor(factories: KeyValueDifferFactory[]);
4077 static create<S>(factories: KeyValueDifferFactory[], parent?: KeyValueDiffers): KeyValueDiffers;
4078 /**
4079 * Takes an array of {@link KeyValueDifferFactory} and returns a provider used to extend the
4080 * inherited {@link KeyValueDiffers} instance with the provided factories and return a new
4081 * {@link KeyValueDiffers} instance.
4082 *
4083 * @usageNotes
4084 * ### Example
4085 *
4086 * The following example shows how to extend an existing list of factories,
4087 * which will only be applied to the injector for this component and its children.
4088 * This step is all that's required to make a new {@link KeyValueDiffer} available.
4089 *
4090 * ```
4091 * @Component({
4092 * viewProviders: [
4093 * KeyValueDiffers.extend([new ImmutableMapDiffer()])
4094 * ]
4095 * })
4096 * ```
4097 */
4098 static extend<S>(factories: KeyValueDifferFactory[]): StaticProvider;
4099 find(kv: any): KeyValueDifferFactory;
4100}
4101
4102/**
4103 * The state associated with a container.
4104 *
4105 * This is an array so that its structure is closer to LView. This helps
4106 * when traversing the view tree (which is a mix of containers and component
4107 * views), so we can jump to viewOrContainer[NEXT] in the same way regardless
4108 * of type.
4109 */
4110declare interface LContainer extends Array<any> {
4111 /**
4112 * The host element of this LContainer.
4113 *
4114 * The host could be an LView if this container is on a component node.
4115 * In that case, the component LView is its HOST.
4116 */
4117 readonly [HOST]: RElement | RComment | ɵangular_packages_core_core_ca;
4118 /**
4119 * This is a type field which allows us to differentiate `LContainer` from `StylingContext` in an
4120 * efficient way. The value is always set to `true`
4121 */
4122 [TYPE]: true;
4123 /**
4124 * Flag to signify that this `LContainer` may have transplanted views which need to be change
4125 * detected. (see: `LView[DECLARATION_COMPONENT_VIEW])`.
4126 *
4127 * This flag, once set, is never unset for the `LContainer`.
4128 */
4129 [HAS_TRANSPLANTED_VIEWS]: boolean;
4130 /**
4131 * Access to the parent view is necessary so we can propagate back
4132 * up from inside a container to parent[NEXT].
4133 */
4134 [PARENT]: ɵangular_packages_core_core_ca;
4135 /**
4136 * This allows us to jump from a container to a sibling container or component
4137 * view with the same parent, so we can remove listeners efficiently.
4138 */
4139 [NEXT]: ɵangular_packages_core_core_ca | LContainer | null;
4140 /**
4141 * The number of direct transplanted views which need a refresh or have descendants themselves
4142 * that need a refresh but have not marked their ancestors as Dirty. This tells us that during
4143 * change detection we should still descend to find those children to refresh, even if the parents
4144 * are not `Dirty`/`CheckAlways`.
4145 */
4146 [TRANSPLANTED_VIEWS_TO_REFRESH]: number;
4147 /**
4148 * A collection of views created based on the underlying `<ng-template>` element but inserted into
4149 * a different `LContainer`. We need to track views created from a given declaration point since
4150 * queries collect matches from the embedded view declaration point and _not_ the insertion point.
4151 */
4152 [MOVED_VIEWS]: ɵangular_packages_core_core_ca[] | null;
4153 /**
4154 * Pointer to the `TNode` which represents the host of the container.
4155 */
4156 [T_HOST]: TNode;
4157 /** The comment element that serves as an anchor for this LContainer. */
4158 readonly [NATIVE]: RComment;
4159 /**
4160 * Array of `ViewRef`s used by any `ViewContainerRef`s that point to this container.
4161 *
4162 * This is lazily initialized by `ViewContainerRef` when the first view is inserted.
4163 *
4164 * NOTE: This is stored as `any[]` because render3 should really not be aware of `ViewRef` and
4165 * doing so creates circular dependency.
4166 */
4167 [VIEW_REFS]: unknown[] | null;
4168}
4169
4170/**
4171 * Human readable version of the `LContainer`
4172 *
4173 * `LContainer` is a data structure used internally to keep track of child views. The `LContainer`
4174 * is designed for efficiency and so at times it is difficult to read or write tests which assert on
4175 * its values. For this reason when `ngDevMode` is true we patch a `LContainer.debug` property which
4176 * points to `LContainerDebug` for easier debugging and test writing. It is the intent of
4177 * `LContainerDebug` to be used in tests.
4178 */
4179declare interface LContainerDebug {
4180 readonly native: RComment;
4181 /**
4182 * Child `LView`s.
4183 */
4184 readonly views: LViewDebug[];
4185 readonly parent: LViewDebug | null;
4186 readonly movedViews: ɵangular_packages_core_core_ca[] | null;
4187 readonly host: RElement | RComment | ɵangular_packages_core_core_ca;
4188 readonly next: LViewDebug | LContainerDebug | null;
4189 readonly hasTransplantedViews: boolean;
4190}
4191
4192/**
4193 * Provide this token to set the locale of your application.
4194 * It is used for i18n extraction, by i18n pipes (DatePipe, I18nPluralPipe, CurrencyPipe,
4195 * DecimalPipe and PercentPipe) and by ICU expressions.
4196 *
4197 * See the [i18n guide](guide/i18n-common-locale-id) for more information.
4198 *
4199 * @usageNotes
4200 * ### Example
4201 *
4202 * ```typescript
4203 * import { LOCALE_ID } from '@angular/core';
4204 * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
4205 * import { AppModule } from './app/app.module';
4206 *
4207 * platformBrowserDynamic().bootstrapModule(AppModule, {
4208 * providers: [{provide: LOCALE_ID, useValue: 'en-US' }]
4209 * });
4210 * ```
4211 *
4212 * @publicApi
4213 */
4214export declare const LOCALE_ID: InjectionToken<string>;
4215
4216/**
4217 * Type for a function that extracts a value for a local refs.
4218 * Example:
4219 * - `<div #nativeDivEl>` - `nativeDivEl` should point to the native `<div>` element;
4220 * - `<ng-template #tplRef>` - `tplRef` should point to the `TemplateRef` instance;
4221 */
4222declare type LocalRefExtractor = (tNode: TNodeWithLocalRefs, currentView: ɵangular_packages_core_core_ca) => any;
4223
4224/**
4225 * lQueries represent a collection of individual LQuery objects tracked in a given view.
4226 */
4227declare interface LQueries {
4228 /**
4229 * A collection of queries tracked in a given view.
4230 */
4231 queries: LQuery<any>[];
4232 /**
4233 * A method called when a new embedded view is created. As a result a set of LQueries applicable
4234 * for a new embedded view is instantiated (cloned) from the declaration view.
4235 * @param tView
4236 */
4237 createEmbeddedView(tView: TView): LQueries | null;
4238 /**
4239 * A method called when an embedded view is inserted into a container. As a result all impacted
4240 * `LQuery` objects (and associated `QueryList`) are marked as dirty.
4241 * @param tView
4242 */
4243 insertView(tView: TView): void;
4244 /**
4245 * A method called when an embedded view is detached from a container. As a result all impacted
4246 * `LQuery` objects (and associated `QueryList`) are marked as dirty.
4247 * @param tView
4248 */
4249 detachView(tView: TView): void;
4250}
4251
4252/**
4253 * An interface that represents query-related information specific to a view instance. Most notably
4254 * it contains:
4255 * - materialized query matches;
4256 * - a pointer to a QueryList where materialized query results should be reported.
4257 */
4258declare interface LQuery<T> {
4259 /**
4260 * Materialized query matches for a given view only (!). Results are initialized lazily so the
4261 * array of matches is set to `null` initially.
4262 */
4263 matches: (T | null)[] | null;
4264 /**
4265 * A QueryList where materialized query results should be reported.
4266 */
4267 queryList: QueryList<T>;
4268 /**
4269 * Clones an LQuery for an embedded view. A cloned query shares the same `QueryList` but has a
4270 * separate collection of materialized matches.
4271 */
4272 clone(): LQuery<T>;
4273 /**
4274 * Called when an embedded view, impacting results of this query, is inserted or removed.
4275 */
4276 setDirty(): void;
4277}
4278
4279/**
4280 * Human readable version of the `LView`.
4281 *
4282 * `LView` is a data structure used internally to keep track of views. The `LView` is designed for
4283 * efficiency and so at times it is difficult to read or write tests which assert on its values. For
4284 * this reason when `ngDevMode` is true we patch a `LView.debug` property which points to
4285 * `LViewDebug` for easier debugging and test writing. It is the intent of `LViewDebug` to be used
4286 * in tests.
4287 */
4288declare interface LViewDebug {
4289 /**
4290 * Flags associated with the `LView` unpacked into a more readable state.
4291 *
4292 * See `LViewFlags` for the flag meanings.
4293 */
4294 readonly flags: {
4295 initPhaseState: number;
4296 creationMode: boolean;
4297 firstViewPass: boolean;
4298 checkAlways: boolean;
4299 dirty: boolean;
4300 attached: boolean;
4301 destroyed: boolean;
4302 isRoot: boolean;
4303 indexWithinInitPhase: number;
4304 };
4305 /**
4306 * Associated TView
4307 */
4308 readonly tView: TView;
4309 /**
4310 * Parent view (or container)
4311 */
4312 readonly parent: LViewDebug | LContainerDebug | null;
4313 /**
4314 * Next sibling to the `LView`.
4315 */
4316 readonly next: LViewDebug | LContainerDebug | null;
4317 /**
4318 * The context used for evaluation of the `LView`
4319 *
4320 * (Usually the component)
4321 */
4322 readonly context: {} | null;
4323 /**
4324 * Hierarchical tree of nodes.
4325 */
4326 readonly nodes: DebugNode_2[];
4327 /**
4328 * Template structure (no instance data).
4329 * (Shows how TNodes are connected)
4330 */
4331 readonly template: string;
4332 /**
4333 * HTML representation of the `LView`.
4334 *
4335 * This is only approximate to actual HTML as child `LView`s are removed.
4336 */
4337 readonly html: string;
4338 /**
4339 * The host element to which this `LView` is attached.
4340 */
4341 readonly hostHTML: string | null;
4342 /**
4343 * Child `LView`s
4344 */
4345 readonly childViews: Array<LViewDebug | LContainerDebug>;
4346 /**
4347 * Sub range of `LView` containing decls (DOM elements).
4348 */
4349 readonly decls: LViewDebugRange;
4350 /**
4351 * Sub range of `LView` containing vars (bindings).
4352 */
4353 readonly vars: LViewDebugRange;
4354 /**
4355 * Sub range of `LView` containing expando (used by DI).
4356 */
4357 readonly expando: LViewDebugRange;
4358}
4359
4360/**
4361 * `LView` is subdivided to ranges where the actual data is stored. Some of these ranges such as
4362 * `decls` and `vars` are known at compile time. Other such as `i18n` and `expando` are runtime only
4363 * concepts.
4364 */
4365declare interface LViewDebugRange {
4366 /**
4367 * The starting index in `LView` where the range begins. (Inclusive)
4368 */
4369 start: number;
4370 /**
4371 * The ending index in `LView` where the range ends. (Exclusive)
4372 */
4373 end: number;
4374 /**
4375 * The length of the range
4376 */
4377 length: number;
4378 /**
4379 * The merged content of the range. `t` contains data from `TView.data` and `l` contains `LView`
4380 * data at an index.
4381 */
4382 content: LViewDebugRangeContent[];
4383}
4384
4385/**
4386 * For convenience the static and instance portions of `TView` and `LView` are merged into a single
4387 * object in `LViewRange`.
4388 */
4389declare interface LViewDebugRangeContent {
4390 /**
4391 * Index into original `LView` or `TView.data`.
4392 */
4393 index: number;
4394 /**
4395 * Value from the `TView.data[index]` location.
4396 */
4397 t: any;
4398 /**
4399 * Value from the `LView[index]` location.
4400 */
4401 l: any;
4402}
4403
4404/** Flags associated with an LView (saved in LView[FLAGS]) */
4405declare const enum LViewFlags {
4406 /** The state of the init phase on the first 2 bits */
4407 InitPhaseStateIncrementer = 1,
4408 InitPhaseStateMask = 3,
4409 /**
4410 * Whether or not the view is in creationMode.
4411 *
4412 * This must be stored in the view rather than using `data` as a marker so that
4413 * we can properly support embedded views. Otherwise, when exiting a child view
4414 * back into the parent view, `data` will be defined and `creationMode` will be
4415 * improperly reported as false.
4416 */
4417 CreationMode = 4,
4418 /**
4419 * Whether or not this LView instance is on its first processing pass.
4420 *
4421 * An LView instance is considered to be on its "first pass" until it
4422 * has completed one creation mode run and one update mode run. At this
4423 * time, the flag is turned off.
4424 */
4425 FirstLViewPass = 8,
4426 /** Whether this view has default change detection strategy (checks always) or onPush */
4427 CheckAlways = 16,
4428 /**
4429 * Whether or not manual change detection is turned on for onPush components.
4430 *
4431 * This is a special mode that only marks components dirty in two cases:
4432 * 1) There has been a change to an @Input property
4433 * 2) `markDirty()` has been called manually by the user
4434 *
4435 * Note that in this mode, the firing of events does NOT mark components
4436 * dirty automatically.
4437 *
4438 * Manual mode is turned off by default for backwards compatibility, as events
4439 * automatically mark OnPush components dirty in View Engine.
4440 *
4441 * TODO: Add a public API to ChangeDetectionStrategy to turn this mode on
4442 */
4443 ManualOnPush = 32,
4444 /** Whether or not this view is currently dirty (needing check) */
4445 Dirty = 64,
4446 /** Whether or not this view is currently attached to change detection tree. */
4447 Attached = 128,
4448 /** Whether or not this view is destroyed. */
4449 Destroyed = 256,
4450 /** Whether or not this view is the root view */
4451 IsRoot = 512,
4452 /**
4453 * Whether this moved LView was needs to be refreshed at the insertion location because the
4454 * declaration was dirty.
4455 */
4456 RefreshTransplantedView = 1024,
4457 /**
4458 * Index of the current init phase on last 21 bits
4459 */
4460 IndexWithinInitPhaseIncrementer = 2048,
4461 IndexWithinInitPhaseShift = 11,
4462 IndexWithinInitPhaseReset = 2047
4463}
4464
4465/**
4466 * Use this enum at bootstrap as an option of `bootstrapModule` to define the strategy
4467 * that the compiler should use in case of missing translations:
4468 * - Error: throw if you have missing translations.
4469 * - Warning (default): show a warning in the console and/or shell.
4470 * - Ignore: do nothing.
4471 *
4472 * See the [i18n guide](guide/i18n-common-merge#report-missing-translations) for more information.
4473 *
4474 * @usageNotes
4475 * ### Example
4476 * ```typescript
4477 * import { MissingTranslationStrategy } from '@angular/core';
4478 * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
4479 * import { AppModule } from './app/app.module';
4480 *
4481 * platformBrowserDynamic().bootstrapModule(AppModule, {
4482 * missingTranslation: MissingTranslationStrategy.Error
4483 * });
4484 * ```
4485 *
4486 * @publicApi
4487 */
4488export declare enum MissingTranslationStrategy {
4489 Error = 0,
4490 Warning = 1,
4491 Ignore = 2
4492}
4493
4494/**
4495 * Combination of NgModuleFactory and ComponentFactories.
4496 *
4497 * @publicApi
4498 */
4499export declare class ModuleWithComponentFactories<T> {
4500 ngModuleFactory: NgModuleFactory<T>;
4501 componentFactories: ComponentFactory<any>[];
4502 constructor(ngModuleFactory: NgModuleFactory<T>, componentFactories: ComponentFactory<any>[]);
4503}
4504
4505/**
4506 * A wrapper around an NgModule that associates it with [providers](guide/glossary#provider
4507 * "Definition"). Usage without a generic type is deprecated.
4508 *
4509 * @see [Deprecations](guide/deprecations#modulewithproviders-type-without-a-generic)
4510 *
4511 * @publicApi
4512 */
4513export declare interface ModuleWithProviders<T> {
4514 ngModule: Type<T>;
4515 providers?: Provider[];
4516}
4517
4518declare const MOVED_VIEWS = 9;
4519
4520declare const NATIVE = 7;
4521
4522declare const NEXT = 4;
4523
4524declare interface NgContentDef {
4525 /**
4526 * this index is checked against NodeDef.ngContentIndex to find the nodes
4527 * that are matched by this ng-content.
4528 * Note that a NodeDef with an ng-content can be reprojected, i.e.
4529 * have a ngContentIndex on its own.
4530 */
4531 index: number;
4532}
4533
4534/**
4535 * A type describing supported iterable types.
4536 *
4537 * @publicApi
4538 */
4539export declare type NgIterable<T> = Array<T> | Iterable<T>;
4540
4541/**
4542 * Type of the NgModule metadata.
4543 *
4544 * @publicApi
4545 */
4546export declare interface NgModule {
4547 /**
4548 * The set of injectable objects that are available in the injector
4549 * of this module.
4550 *
4551 * @see [Dependency Injection guide](guide/dependency-injection)
4552 * @see [NgModule guide](guide/providers)
4553 *
4554 * @usageNotes
4555 *
4556 * Dependencies whose providers are listed here become available for injection
4557 * into any component, directive, pipe or service that is a child of this injector.
4558 * The NgModule used for bootstrapping uses the root injector, and can provide dependencies
4559 * to any part of the app.
4560 *
4561 * A lazy-loaded module has its own injector, typically a child of the app root injector.
4562 * Lazy-loaded services are scoped to the lazy-loaded module's injector.
4563 * If a lazy-loaded module also provides the `UserService`, any component created
4564 * within that module's context (such as by router navigation) gets the local instance
4565 * of the service, not the instance in the root injector.
4566 * Components in external modules continue to receive the instance provided by their injectors.
4567 *
4568 * ### Example
4569 *
4570 * The following example defines a class that is injected in
4571 * the HelloWorld NgModule:
4572 *
4573 * ```
4574 * class Greeter {
4575 * greet(name:string) {
4576 * return 'Hello ' + name + '!';
4577 * }
4578 * }
4579 *
4580 * @NgModule({
4581 * providers: [
4582 * Greeter
4583 * ]
4584 * })
4585 * class HelloWorld {
4586 * greeter:Greeter;
4587 *
4588 * constructor(greeter:Greeter) {
4589 * this.greeter = greeter;
4590 * }
4591 * }
4592 * ```
4593 */
4594 providers?: Provider[];
4595 /**
4596 * The set of components, directives, and pipes ([declarables](guide/glossary#declarable))
4597 * that belong to this module.
4598 *
4599 * @usageNotes
4600 *
4601 * The set of selectors that are available to a template include those declared here, and
4602 * those that are exported from imported NgModules.
4603 *
4604 * Declarables must belong to exactly one module.
4605 * The compiler emits an error if you try to declare the same class in more than one module.
4606 * Be careful not to declare a class that is imported from another module.
4607 *
4608 * ### Example
4609 *
4610 * The following example allows the CommonModule to use the `NgFor`
4611 * directive.
4612 *
4613 * ```javascript
4614 * @NgModule({
4615 * declarations: [NgFor]
4616 * })
4617 * class CommonModule {
4618 * }
4619 * ```
4620 */
4621 declarations?: Array<Type<any> | any[]>;
4622 /**
4623 * The set of NgModules whose exported [declarables](guide/glossary#declarable)
4624 * are available to templates in this module.
4625 *
4626 * @usageNotes
4627 *
4628 * A template can use exported declarables from any
4629 * imported module, including those from modules that are imported indirectly
4630 * and re-exported.
4631 * For example, `ModuleA` imports `ModuleB`, and also exports
4632 * it, which makes the declarables from `ModuleB` available
4633 * wherever `ModuleA` is imported.
4634 *
4635 * ### Example
4636 *
4637 * The following example allows MainModule to use anything exported by
4638 * `CommonModule`:
4639 *
4640 * ```javascript
4641 * @NgModule({
4642 * imports: [CommonModule]
4643 * })
4644 * class MainModule {
4645 * }
4646 * ```
4647 *
4648 */
4649 imports?: Array<Type<any> | ModuleWithProviders<{}> | any[]>;
4650 /**
4651 * The set of components, directives, and pipes declared in this
4652 * NgModule that can be used in the template of any component that is part of an
4653 * NgModule that imports this NgModule. Exported declarations are the module's public API.
4654 *
4655 * A declarable belongs to one and only one NgModule.
4656 * A module can list another module among its exports, in which case all of that module's
4657 * public declaration are exported.
4658 *
4659 * @usageNotes
4660 *
4661 * Declarations are private by default.
4662 * If this ModuleA does not export UserComponent, then only the components within this
4663 * ModuleA can use UserComponent.
4664 *
4665 * ModuleA can import ModuleB and also export it, making exports from ModuleB
4666 * available to an NgModule that imports ModuleA.
4667 *
4668 * ### Example
4669 *
4670 * The following example exports the `NgFor` directive from CommonModule.
4671 *
4672 * ```javascript
4673 * @NgModule({
4674 * exports: [NgFor]
4675 * })
4676 * class CommonModule {
4677 * }
4678 * ```
4679 */
4680 exports?: Array<Type<any> | any[]>;
4681 /**
4682 * The set of components to compile when this NgModule is defined,
4683 * so that they can be dynamically loaded into the view.
4684 *
4685 * For each component listed here, Angular creates a `ComponentFactory`
4686 * and stores it in the `ComponentFactoryResolver`.
4687 *
4688 * Angular automatically adds components in the module's bootstrap
4689 * and route definitions into the `entryComponents` list. Use this
4690 * option to add components that are bootstrapped
4691 * using one of the imperative techniques, such as `ViewContainerRef.createComponent()`.
4692 *
4693 * @see [Entry Components](guide/entry-components)
4694 * @deprecated
4695 * Since 9.0.0. With Ivy, this property is no longer necessary.
4696 * (You may need to keep these if building a library that will be consumed by a View Engine
4697 * application.)
4698 */
4699 entryComponents?: Array<Type<any> | any[]>;
4700 /**
4701 * The set of components that are bootstrapped when
4702 * this module is bootstrapped. The components listed here
4703 * are automatically added to `entryComponents`.
4704 */
4705 bootstrap?: Array<Type<any> | any[]>;
4706 /**
4707 * The set of schemas that declare elements to be allowed in the NgModule.
4708 * Elements and properties that are neither Angular components nor directives
4709 * must be declared in a schema.
4710 *
4711 * Allowed value are `NO_ERRORS_SCHEMA` and `CUSTOM_ELEMENTS_SCHEMA`.
4712 *
4713 * @security When using one of `NO_ERRORS_SCHEMA` or `CUSTOM_ELEMENTS_SCHEMA`
4714 * you must ensure that allowed elements and properties securely escape inputs.
4715 */
4716 schemas?: Array<SchemaMetadata | any[]>;
4717 /**
4718 * A name or path that uniquely identifies this NgModule in `getModuleFactory`.
4719 * If left `undefined`, the NgModule is not registered with
4720 * `getModuleFactory`.
4721 */
4722 id?: string;
4723 /**
4724 * When present, this module is ignored by the AOT compiler.
4725 * It remains in distributed code, and the JIT compiler attempts to compile it
4726 * at run time, in the browser.
4727 * To ensure the correct behavior, the app must import `@angular/compiler`.
4728 */
4729 jit?: true;
4730}
4731
4732/**
4733 * @Annotation
4734 * @publicApi
4735 */
4736export declare const NgModule: NgModuleDecorator;
4737
4738/**
4739 * Type of the NgModule decorator / constructor function.
4740 *
4741 * @publicApi
4742 */
4743export declare interface NgModuleDecorator {
4744 /**
4745 * Decorator that marks a class as an NgModule and supplies configuration metadata.
4746 */
4747 (obj?: NgModule): TypeDecorator;
4748 new (obj?: NgModule): NgModule;
4749}
4750
4751declare interface NgModuleDefinition extends Definition<NgModuleDefinitionFactory> {
4752 providers: NgModuleProviderDef[];
4753 providersByKey: {
4754 [tokenKey: string]: NgModuleProviderDef;
4755 };
4756 modules: any[];
4757 scope: 'root' | 'platform' | null;
4758}
4759
4760declare interface NgModuleDefinitionFactory extends DefinitionFactory<NgModuleDefinition> {
4761}
4762
4763/**
4764 * @publicApi
4765 */
4766export declare abstract class NgModuleFactory<T> {
4767 abstract get moduleType(): Type<T>;
4768 abstract create(parentInjector: Injector | null): NgModuleRef<T>;
4769}
4770
4771/**
4772 * Used to load ng module factories.
4773 *
4774 * @publicApi
4775 * @deprecated the `string` form of `loadChildren` is deprecated, and `NgModuleFactoryLoader` is
4776 * part of its implementation. See `LoadChildren` for more details.
4777 */
4778export declare abstract class NgModuleFactoryLoader {
4779 abstract load(path: string): Promise<NgModuleFactory<any>>;
4780}
4781
4782declare interface NgModuleProviderDef {
4783 flags: ɵNodeFlags;
4784 index: number;
4785 token: any;
4786 value: any;
4787 deps: DepDef[];
4788}
4789
4790/**
4791 * Represents an instance of an `NgModule` created by an `NgModuleFactory`.
4792 * Provides access to the `NgModule` instance and related objects.
4793 *
4794 * @publicApi
4795 */
4796export declare abstract class NgModuleRef<T> {
4797 /**
4798 * The injector that contains all of the providers of the `NgModule`.
4799 */
4800 abstract get injector(): Injector;
4801 /**
4802 * The resolver that can retrieve the component factories
4803 * declared in the `entryComponents` property of the module.
4804 */
4805 abstract get componentFactoryResolver(): ComponentFactoryResolver;
4806 /**
4807 * The `NgModule` instance.
4808 */
4809 abstract get instance(): T;
4810 /**
4811 * Destroys the module instance and all of the data structures associated with it.
4812 */
4813 abstract destroy(): void;
4814 /**
4815 * Registers a callback to be executed when the module is destroyed.
4816 */
4817 abstract onDestroy(callback: () => void): void;
4818}
4819
4820/**
4821 * A token for third-party components that can register themselves with NgProbe.
4822 *
4823 * @publicApi
4824 */
4825export declare class NgProbeToken {
4826 name: string;
4827 token: any;
4828 constructor(name: string, token: any);
4829}
4830
4831/**
4832 * An injectable service for executing work inside or outside of the Angular zone.
4833 *
4834 * The most common use of this service is to optimize performance when starting a work consisting of
4835 * one or more asynchronous tasks that don't require UI updates or error handling to be handled by
4836 * Angular. Such tasks can be kicked off via {@link #runOutsideAngular} and if needed, these tasks
4837 * can reenter the Angular zone via {@link #run}.
4838 *
4839 * <!-- TODO: add/fix links to:
4840 * - docs explaining zones and the use of zones in Angular and change-detection
4841 * - link to runOutsideAngular/run (throughout this file!)
4842 * -->
4843 *
4844 * @usageNotes
4845 * ### Example
4846 *
4847 * ```
4848 * import {Component, NgZone} from '@angular/core';
4849 * import {NgIf} from '@angular/common';
4850 *
4851 * @Component({
4852 * selector: 'ng-zone-demo',
4853 * template: `
4854 * <h2>Demo: NgZone</h2>
4855 *
4856 * <p>Progress: {{progress}}%</p>
4857 * <p *ngIf="progress >= 100">Done processing {{label}} of Angular zone!</p>
4858 *
4859 * <button (click)="processWithinAngularZone()">Process within Angular zone</button>
4860 * <button (click)="processOutsideOfAngularZone()">Process outside of Angular zone</button>
4861 * `,
4862 * })
4863 * export class NgZoneDemo {
4864 * progress: number = 0;
4865 * label: string;
4866 *
4867 * constructor(private _ngZone: NgZone) {}
4868 *
4869 * // Loop inside the Angular zone
4870 * // so the UI DOES refresh after each setTimeout cycle
4871 * processWithinAngularZone() {
4872 * this.label = 'inside';
4873 * this.progress = 0;
4874 * this._increaseProgress(() => console.log('Inside Done!'));
4875 * }
4876 *
4877 * // Loop outside of the Angular zone
4878 * // so the UI DOES NOT refresh after each setTimeout cycle
4879 * processOutsideOfAngularZone() {
4880 * this.label = 'outside';
4881 * this.progress = 0;
4882 * this._ngZone.runOutsideAngular(() => {
4883 * this._increaseProgress(() => {
4884 * // reenter the Angular zone and display done
4885 * this._ngZone.run(() => { console.log('Outside Done!'); });
4886 * });
4887 * });
4888 * }
4889 *
4890 * _increaseProgress(doneCallback: () => void) {
4891 * this.progress += 1;
4892 * console.log(`Current progress: ${this.progress}%`);
4893 *
4894 * if (this.progress < 100) {
4895 * window.setTimeout(() => this._increaseProgress(doneCallback), 10);
4896 * } else {
4897 * doneCallback();
4898 * }
4899 * }
4900 * }
4901 * ```
4902 *
4903 * @publicApi
4904 */
4905export declare class NgZone {
4906 readonly hasPendingMacrotasks: boolean;
4907 readonly hasPendingMicrotasks: boolean;
4908 /**
4909 * Whether there are no outstanding microtasks or macrotasks.
4910 */
4911 readonly isStable: boolean;
4912 /**
4913 * Notifies when code enters Angular Zone. This gets fired first on VM Turn.
4914 */
4915 readonly onUnstable: EventEmitter<any>;
4916 /**
4917 * Notifies when there is no more microtasks enqueued in the current VM Turn.
4918 * This is a hint for Angular to do change detection, which may enqueue more microtasks.
4919 * For this reason this event can fire multiple times per VM Turn.
4920 */
4921 readonly onMicrotaskEmpty: EventEmitter<any>;
4922 /**
4923 * Notifies when the last `onMicrotaskEmpty` has run and there are no more microtasks, which
4924 * implies we are about to relinquish VM turn.
4925 * This event gets called just once.
4926 */
4927 readonly onStable: EventEmitter<any>;
4928 /**
4929 * Notifies that an error has been delivered.
4930 */
4931 readonly onError: EventEmitter<any>;
4932 constructor({ enableLongStackTrace, shouldCoalesceEventChangeDetection, shouldCoalesceRunChangeDetection }: {
4933 enableLongStackTrace?: boolean | undefined;
4934 shouldCoalesceEventChangeDetection?: boolean | undefined;
4935 shouldCoalesceRunChangeDetection?: boolean | undefined;
4936 });
4937 static isInAngularZone(): boolean;
4938 static assertInAngularZone(): void;
4939 static assertNotInAngularZone(): void;
4940 /**
4941 * Executes the `fn` function synchronously within the Angular zone and returns value returned by
4942 * the function.
4943 *
4944 * Running functions via `run` allows you to reenter Angular zone from a task that was executed
4945 * outside of the Angular zone (typically started via {@link #runOutsideAngular}).
4946 *
4947 * Any future tasks or microtasks scheduled from within this function will continue executing from
4948 * within the Angular zone.
4949 *
4950 * If a synchronous error happens it will be rethrown and not reported via `onError`.
4951 */
4952 run<T>(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any[]): T;
4953 /**
4954 * Executes the `fn` function synchronously within the Angular zone as a task and returns value
4955 * returned by the function.
4956 *
4957 * Running functions via `run` allows you to reenter Angular zone from a task that was executed
4958 * outside of the Angular zone (typically started via {@link #runOutsideAngular}).
4959 *
4960 * Any future tasks or microtasks scheduled from within this function will continue executing from
4961 * within the Angular zone.
4962 *
4963 * If a synchronous error happens it will be rethrown and not reported via `onError`.
4964 */
4965 runTask<T>(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any[], name?: string): T;
4966 /**
4967 * Same as `run`, except that synchronous errors are caught and forwarded via `onError` and not
4968 * rethrown.
4969 */
4970 runGuarded<T>(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any[]): T;
4971 /**
4972 * Executes the `fn` function synchronously in Angular's parent zone and returns value returned by
4973 * the function.
4974 *
4975 * Running functions via {@link #runOutsideAngular} allows you to escape Angular's zone and do
4976 * work that
4977 * doesn't trigger Angular change-detection or is subject to Angular's error handling.
4978 *
4979 * Any future tasks or microtasks scheduled from within this function will continue executing from
4980 * outside of the Angular zone.
4981 *
4982 * Use {@link #run} to reenter the Angular zone and do work that updates the application model.
4983 */
4984 runOutsideAngular<T>(fn: (...args: any[]) => T): T;
4985}
4986
4987/**
4988 * Defines a schema that allows any property on any element.
4989 *
4990 * This schema allows you to ignore the errors related to any unknown elements or properties in a
4991 * template. The usage of this schema is generally discouraged because it prevents useful validation
4992 * and may hide real errors in your template. Consider using the `CUSTOM_ELEMENTS_SCHEMA` instead.
4993 *
4994 * @publicApi
4995 */
4996export declare const NO_ERRORS_SCHEMA: SchemaMetadata;
4997
4998declare interface NodeCheckFn {
4999 (view: ViewData, nodeIndex: number, argStyle: ɵArgumentType.Dynamic, values: any[]): any;
5000 (view: ViewData, nodeIndex: number, argStyle: ɵArgumentType.Inline, v0?: any, v1?: any, v2?: any, v3?: any, v4?: any, v5?: any, v6?: any, v7?: any, v8?: any, v9?: any): any;
5001}
5002
5003/**
5004 * Node instance data.
5005 *
5006 * We have a separate type per NodeType to save memory
5007 * (TextData | ElementData | ProviderData | PureExpressionData | QueryList<any>)
5008 *
5009 * To keep our code monomorphic,
5010 * we prohibit using `NodeData` directly but enforce the use of accessors (`asElementData`, ...).
5011 * This way, no usage site can get a `NodeData` from view.nodes and then use it for different
5012 * purposes.
5013 */
5014declare class NodeData {
5015 private __brand;
5016}
5017
5018/**
5019 * A node definition in the view.
5020 *
5021 * Note: We use one type for all nodes so that loops that loop over all nodes
5022 * of a ViewDefinition stay monomorphic!
5023 */
5024declare interface NodeDef {
5025 flags: ɵNodeFlags;
5026 nodeIndex: number;
5027 checkIndex: number;
5028 parent: NodeDef | null;
5029 renderParent: NodeDef | null;
5030 /** this is checked against NgContentDef.index to find matched nodes */
5031 ngContentIndex: number | null;
5032 /** number of transitive children */
5033 childCount: number;
5034 /** aggregated NodeFlags for all transitive children (does not include self) **/
5035 childFlags: ɵNodeFlags;
5036 /** aggregated NodeFlags for all direct children (does not include self) **/
5037 directChildFlags: ɵNodeFlags;
5038 bindingIndex: number;
5039 bindings: BindingDef[];
5040 bindingFlags: ɵBindingFlags;
5041 outputIndex: number;
5042 outputs: OutputDef[];
5043 /**
5044 * references that the user placed on the element
5045 */
5046 references: {
5047 [refId: string]: ɵQueryValueType;
5048 };
5049 /**
5050 * ids and value types of all queries that are matched by this node.
5051 */
5052 matchedQueries: {
5053 [queryId: number]: ɵQueryValueType;
5054 };
5055 /** Binary or of all matched query ids of this node. */
5056 matchedQueryIds: number;
5057 /**
5058 * Binary or of all query ids that are matched by one of the children.
5059 * This includes query ids from templates as well.
5060 * Used as a bloom filter.
5061 */
5062 childMatchedQueries: number;
5063 element: ElementDef | null;
5064 provider: ProviderDef | null;
5065 text: TextDef | null;
5066 query: QueryDef | null;
5067 ngContent: NgContentDef | null;
5068}
5069
5070declare interface NodeInjectorDebug {
5071 /**
5072 * Instance bloom. Does the current injector have a provider with a given bloom mask.
5073 */
5074 bloom: string;
5075 /**
5076 * Cumulative bloom. Do any of the above injectors have a provider with a given bloom mask.
5077 */
5078 cumulativeBloom: string;
5079 /**
5080 * A list of providers associated with this injector.
5081 */
5082 providers: (Type<unknown> | ɵDirectiveDef<unknown> | ɵComponentDef<unknown>)[];
5083 /**
5084 * A list of providers associated with this injector visible to the view of the component only.
5085 */
5086 viewProviders: Type<unknown>[];
5087 /**
5088 * Location of the parent `TNode`.
5089 */
5090 parentInjectorIndex: number;
5091}
5092
5093/**
5094 * Function to call console.error at the right source location. This is an indirection
5095 * via another function as browser will log the location that actually called
5096 * `console.error`.
5097 */
5098declare interface NodeLogger {
5099 (): () => void;
5100}
5101
5102/**
5103 * Object Oriented style of API needed to create elements and text nodes.
5104 *
5105 * This is the native browser API style, e.g. operations are methods on individual objects
5106 * like HTMLElement. With this style, no additional code is needed as a facade
5107 * (reducing payload size).
5108 * */
5109declare interface ObjectOrientedRenderer3 {
5110 createComment(data: string): RComment;
5111 createElement(tagName: string): RElement;
5112 createElementNS(namespace: string, tagName: string): RElement;
5113 createTextNode(data: string): RText;
5114 querySelector(selectors: string): RElement | null;
5115}
5116
5117/**
5118 * @description
5119 * A lifecycle hook that is called when any data-bound property of a directive changes.
5120 * Define an `ngOnChanges()` method to handle the changes.
5121 *
5122 * @see `DoCheck`
5123 * @see `OnInit`
5124 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
5125 *
5126 * @usageNotes
5127 * The following snippet shows how a component can implement this interface to
5128 * define an on-changes handler for an input property.
5129 *
5130 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='OnChanges'}
5131 *
5132 * @publicApi
5133 */
5134export declare interface OnChanges {
5135 /**
5136 * A callback method that is invoked immediately after the
5137 * default change detector has checked data-bound properties
5138 * if at least one has changed, and before the view and content
5139 * children are checked.
5140 * @param changes The changed properties.
5141 */
5142 ngOnChanges(changes: SimpleChanges): void;
5143}
5144
5145/**
5146 * A lifecycle hook that is called when a directive, pipe, or service is destroyed.
5147 * Use for any custom cleanup that needs to occur when the
5148 * instance is destroyed.
5149 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
5150 *
5151 * @usageNotes
5152 * The following snippet shows how a component can implement this interface
5153 * to define its own custom clean-up method.
5154 *
5155 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='OnDestroy'}
5156 *
5157 * @publicApi
5158 */
5159export declare interface OnDestroy {
5160 /**
5161 * A callback method that performs custom clean-up, invoked immediately
5162 * before a directive, pipe, or service instance is destroyed.
5163 */
5164 ngOnDestroy(): void;
5165}
5166
5167/**
5168 * @description
5169 * A lifecycle hook that is called after Angular has initialized
5170 * all data-bound properties of a directive.
5171 * Define an `ngOnInit()` method to handle any additional initialization tasks.
5172 *
5173 * @see `AfterContentInit`
5174 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
5175 *
5176 * @usageNotes
5177 * The following snippet shows how a component can implement this interface to
5178 * define its own initialization method.
5179 *
5180 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='OnInit'}
5181 *
5182 * @publicApi
5183 */
5184export declare interface OnInit {
5185 /**
5186 * A callback method that is invoked immediately after the
5187 * default change detector has checked the directive's
5188 * data-bound properties for the first time,
5189 * and before any of the view or content children have been checked.
5190 * It is invoked only once when the directive is instantiated.
5191 */
5192 ngOnInit(): void;
5193}
5194
5195declare type OpaqueValue = unknown;
5196
5197declare interface OpaqueViewState {
5198 '__brand__': 'Brand for OpaqueViewState that nothing will match';
5199}
5200
5201/**
5202 * Type of the Optional metadata.
5203 *
5204 * @publicApi
5205 */
5206export declare interface Optional {
5207}
5208
5209/**
5210 * Optional decorator and metadata.
5211 *
5212 * @Annotation
5213 * @publicApi
5214 */
5215export declare const Optional: OptionalDecorator;
5216
5217/**
5218 * Type of the Optional decorator / constructor function.
5219 *
5220 * @publicApi
5221 */
5222export declare interface OptionalDecorator {
5223 /**
5224 * Parameter decorator to be used on constructor parameters,
5225 * which marks the parameter as being an optional dependency.
5226 * The DI framework provides `null` if the dependency is not found.
5227 *
5228 * Can be used together with other parameter decorators
5229 * that modify how dependency injection operates.
5230 *
5231 * @usageNotes
5232 *
5233 * The following code allows the possibility of a `null` result:
5234 *
5235 * <code-example path="core/di/ts/metadata_spec.ts" region="Optional">
5236 * </code-example>
5237 *
5238 * @see ["Dependency Injection Guide"](guide/dependency-injection).
5239 */
5240 (): any;
5241 new (): Optional;
5242}
5243
5244/**
5245 * Type of the Output metadata.
5246 *
5247 * @publicApi
5248 */
5249export declare interface Output {
5250 /**
5251 * The name of the DOM property to which the output property is bound.
5252 */
5253 bindingPropertyName?: string;
5254}
5255
5256/**
5257 * @Annotation
5258 * @publicApi
5259 */
5260export declare const Output: OutputDecorator;
5261
5262/**
5263 * Type of the Output decorator / constructor function.
5264 *
5265 * @publicApi
5266 */
5267export declare interface OutputDecorator {
5268 /**
5269 * Decorator that marks a class field as an output property and supplies configuration metadata.
5270 * The DOM property bound to the output property is automatically updated during change detection.
5271 *
5272 * @usageNotes
5273 *
5274 * You can supply an optional name to use in templates when the
5275 * component is instantiated, that maps to the
5276 * name of the bound property. By default, the original
5277 * name of the bound property is used for output binding.
5278 *
5279 * See `Input` decorator for an example of providing a binding name.
5280 *
5281 * @see [Input and Output properties](guide/inputs-outputs)
5282 *
5283 */
5284 (bindingPropertyName?: string): any;
5285 new (bindingPropertyName?: string): any;
5286}
5287
5288declare interface OutputDef {
5289 type: OutputType;
5290 target: 'window' | 'document' | 'body' | 'component' | null;
5291 eventName: string;
5292 propName: string | null;
5293}
5294
5295declare const enum OutputType {
5296 ElementOutput = 0,
5297 DirectiveOutput = 1
5298}
5299
5300/**
5301 * A [DI token](guide/glossary#di-token "DI token definition") that indicates the root directory of
5302 * the application
5303 * @publicApi
5304 */
5305export declare const PACKAGE_ROOT_URL: InjectionToken<string>;
5306
5307declare const PARENT = 3;
5308
5309/**
5310 * Type of the Pipe metadata.
5311 *
5312 * @publicApi
5313 */
5314export declare interface Pipe {
5315 /**
5316 * The pipe name to use in template bindings.
5317 * Typically uses [lowerCamelCase](guide/glossary#case-types)
5318 * because the name cannot contain hyphens.
5319 */
5320 name: string;
5321 /**
5322 * When true, the pipe is pure, meaning that the
5323 * `transform()` method is invoked only when its input arguments
5324 * change. Pipes are pure by default.
5325 *
5326 * If the pipe has internal state (that is, the result
5327 * depends on state other than its arguments), set `pure` to false.
5328 * In this case, the pipe is invoked on each change-detection cycle,
5329 * even if the arguments have not changed.
5330 */
5331 pure?: boolean;
5332}
5333
5334/**
5335 * @Annotation
5336 * @publicApi
5337 */
5338export declare const Pipe: PipeDecorator;
5339
5340/**
5341 * Type of the Pipe decorator / constructor function.
5342 *
5343 * @publicApi
5344 */
5345export declare interface PipeDecorator {
5346 /**
5347 *
5348 * Decorator that marks a class as pipe and supplies configuration metadata.
5349 *
5350 * A pipe class must implement the `PipeTransform` interface.
5351 * For example, if the name is "myPipe", use a template binding expression
5352 * such as the following:
5353 *
5354 * ```
5355 * {{ exp | myPipe }}
5356 * ```
5357 *
5358 * The result of the expression is passed to the pipe's `transform()` method.
5359 *
5360 * A pipe must belong to an NgModule in order for it to be available
5361 * to a template. To make it a member of an NgModule,
5362 * list it in the `declarations` field of the `NgModule` metadata.
5363 *
5364 * @see [Style Guide: Pipe Names](guide/styleguide#02-09)
5365 *
5366 */
5367 (obj: Pipe): TypeDecorator;
5368 /**
5369 * See the `Pipe` decorator.
5370 */
5371 new (obj: Pipe): Pipe;
5372}
5373
5374declare type PipeDefList = ɵPipeDef<any>[];
5375
5376/**
5377 * Type used for PipeDefs on component definition.
5378 *
5379 * The function is necessary to be able to support forward declarations.
5380 */
5381declare type PipeDefListOrFactory = (() => PipeDefList) | PipeDefList;
5382
5383
5384/**
5385 * An interface that is implemented by pipes in order to perform a transformation.
5386 * Angular invokes the `transform` method with the value of a binding
5387 * as the first argument, and any parameters as the second argument in list form.
5388 *
5389 * @usageNotes
5390 *
5391 * In the following example, `TruncatePipe` returns the shortened value with an added ellipses.
5392 *
5393 * <code-example path="core/ts/pipes/simple_truncate.ts" header="simple_truncate.ts"></code-example>
5394 *
5395 * Invoking `{{ 'It was the best of times' | truncate }}` in a template will produce `It was...`.
5396 *
5397 * In the following example, `TruncatePipe` takes parameters that sets the truncated length and the
5398 * string to append with.
5399 *
5400 * <code-example path="core/ts/pipes/truncate.ts" header="truncate.ts"></code-example>
5401 *
5402 * Invoking `{{ 'It was the best of times' | truncate:4:'....' }}` in a template will produce `It
5403 * was the best....`.
5404 *
5405 * @publicApi
5406 */
5407export declare interface PipeTransform {
5408 transform(value: any, ...args: any[]): any;
5409}
5410
5411/**
5412 * A subclass of `Type` which has a static `ɵpipe`:`PipeDef` field making it
5413 * consumable for rendering.
5414 */
5415declare interface PipeType<T> extends Type<T> {
5416 ɵpipe: unknown;
5417}
5418
5419declare type PipeTypeList = (PipeType<any> | Type<any>)[];
5420
5421declare type PipeTypesOrFactory = (() => PipeTypeList) | PipeTypeList;
5422
5423/**
5424 * A token that indicates an opaque platform ID.
5425 * @publicApi
5426 */
5427export declare const PLATFORM_ID: InjectionToken<Object>;
5428
5429/**
5430 * A function that is executed when a platform is initialized.
5431 * @publicApi
5432 */
5433export declare const PLATFORM_INITIALIZER: InjectionToken<(() => void)[]>;
5434
5435/**
5436 * This platform has to be included in any other platform
5437 *
5438 * @publicApi
5439 */
5440export declare const platformCore: (extraProviders?: StaticProvider[] | undefined) => PlatformRef;
5441
5442/**
5443 * The Angular platform is the entry point for Angular on a web page.
5444 * Each page has exactly one platform. Services (such as reflection) which are common
5445 * to every Angular application running on the page are bound in its scope.
5446 * A page's platform is initialized implicitly when a platform is created using a platform
5447 * factory such as `PlatformBrowser`, or explicitly by calling the `createPlatform()` function.
5448 *
5449 * @publicApi
5450 */
5451export declare class PlatformRef {
5452 private _injector;
5453 private _modules;
5454 private _destroyListeners;
5455 private _destroyed;
5456 /**
5457 * Creates an instance of an `@NgModule` for the given platform for offline compilation.
5458 *
5459 * @usageNotes
5460 *
5461 * The following example creates the NgModule for a browser platform.
5462 *
5463 * ```typescript
5464 * my_module.ts:
5465 *
5466 * @NgModule({
5467 * imports: [BrowserModule]
5468 * })
5469 * class MyModule {}
5470 *
5471 * main.ts:
5472 * import {MyModuleNgFactory} from './my_module.ngfactory';
5473 * import {platformBrowser} from '@angular/platform-browser';
5474 *
5475 * let moduleRef = platformBrowser().bootstrapModuleFactory(MyModuleNgFactory);
5476 * ```
5477 */
5478 bootstrapModuleFactory<M>(moduleFactory: NgModuleFactory<M>, options?: BootstrapOptions): Promise<NgModuleRef<M>>;
5479 /**
5480 * Creates an instance of an `@NgModule` for a given platform using the given runtime compiler.
5481 *
5482 * @usageNotes
5483 * ### Simple Example
5484 *
5485 * ```typescript
5486 * @NgModule({
5487 * imports: [BrowserModule]
5488 * })
5489 * class MyModule {}
5490 *
5491 * let moduleRef = platformBrowser().bootstrapModule(MyModule);
5492 * ```
5493 *
5494 */
5495 bootstrapModule<M>(moduleType: Type<M>, compilerOptions?: (CompilerOptions & BootstrapOptions) | Array<CompilerOptions & BootstrapOptions>): Promise<NgModuleRef<M>>;
5496 private _moduleDoBootstrap;
5497 /**
5498 * Registers a listener to be called when the platform is destroyed.
5499 */
5500 onDestroy(callback: () => void): void;
5501 /**
5502 * Retrieves the platform {@link Injector}, which is the parent injector for
5503 * every Angular application on the page and provides singleton providers.
5504 */
5505 get injector(): Injector;
5506 /**
5507 * Destroys the current Angular platform and all Angular applications on the page.
5508 * Destroys all modules and listeners registered with the platform.
5509 */
5510 destroy(): void;
5511 get destroyed(): boolean;
5512}
5513
5514declare interface PlatformReflectionCapabilities {
5515 isReflectionEnabled(): boolean;
5516 factory(type: Type<any>): Function;
5517 hasLifecycleHook(type: any, lcProperty: string): boolean;
5518 guards(type: any): {
5519 [key: string]: any;
5520 };
5521 /**
5522 * Return a list of annotations/types for constructor parameters
5523 */
5524 parameters(type: Type<any>): any[][];
5525 /**
5526 * Return a list of annotations declared on the class
5527 */
5528 annotations(type: Type<any>): any[];
5529 /**
5530 * Return a object literal which describes the annotations on Class fields/properties.
5531 */
5532 propMetadata(typeOrFunc: Type<any>): {
5533 [key: string]: any[];
5534 };
5535 getter(name: string): ɵGetterFn;
5536 setter(name: string): ɵSetterFn;
5537 method(name: string): ɵMethodFn;
5538 importUri(type: Type<any>): string;
5539 resourceUri(type: Type<any>): string;
5540 resolveIdentifier(name: string, moduleUrl: string, members: string[], runtime: any): any;
5541 resolveEnum(enumIdentifier: any, name: string): any;
5542}
5543
5544/**
5545 * A boolean-valued function over a value, possibly including context information
5546 * regarding that value's position in an array.
5547 *
5548 * @publicApi
5549 */
5550export declare interface Predicate<T> {
5551 (value: T): boolean;
5552}
5553
5554declare const PREORDER_HOOK_FLAGS = 18;
5555
5556/** More flags associated with an LView (saved in LView[PREORDER_HOOK_FLAGS]) */
5557declare const enum PreOrderHookFlags {
5558 /**
5559 The index of the next pre-order hook to be called in the hooks array, on the first 16
5560 bits
5561 */
5562 IndexOfTheNextPreOrderHookMaskMask = 65535,
5563 /**
5564 * The number of init hooks that have already been called, on the last 16 bits
5565 */
5566 NumberOfInitHooksCalledIncrementer = 65536,
5567 NumberOfInitHooksCalledShift = 16,
5568 NumberOfInitHooksCalledMask = 4294901760
5569}
5570
5571/**
5572 * Procedural style of API needed to create elements and text nodes.
5573 *
5574 * In non-native browser environments (e.g. platforms such as web-workers), this is the
5575 * facade that enables element manipulation. This also facilitates backwards compatibility
5576 * with Renderer2.
5577 */
5578declare interface ProceduralRenderer3 {
5579 destroy(): void;
5580 createComment(value: string): RComment;
5581 createElement(name: string, namespace?: string | null): RElement;
5582 createText(value: string): RText;
5583 /**
5584 * This property is allowed to be null / undefined,
5585 * in which case the view engine won't call it.
5586 * This is used as a performance optimization for production mode.
5587 */
5588 destroyNode?: ((node: RNode) => void) | null;
5589 appendChild(parent: RElement, newChild: RNode): void;
5590 insertBefore(parent: RNode, newChild: RNode, refChild: RNode | null, isMove?: boolean): void;
5591 removeChild(parent: RElement, oldChild: RNode, isHostElement?: boolean): void;
5592 selectRootElement(selectorOrNode: string | any, preserveContent?: boolean): RElement;
5593 parentNode(node: RNode): RElement | null;
5594 nextSibling(node: RNode): RNode | null;
5595 setAttribute(el: RElement, name: string, value: string | TrustedHTML | TrustedScript | TrustedScriptURL, namespace?: string | null): void;
5596 removeAttribute(el: RElement, name: string, namespace?: string | null): void;
5597 addClass(el: RElement, name: string): void;
5598 removeClass(el: RElement, name: string): void;
5599 setStyle(el: RElement, style: string, value: any, flags?: RendererStyleFlags2 | RendererStyleFlags3): void;
5600 removeStyle(el: RElement, style: string, flags?: RendererStyleFlags2 | RendererStyleFlags3): void;
5601 setProperty(el: RElement, name: string, value: any): void;
5602 setValue(node: RText | RComment, value: string): void;
5603 listen(target: GlobalTargetName | RNode, eventName: string, callback: (event: any) => boolean | void): () => void;
5604}
5605
5606/**
5607 * Describes a function that is used to process provider lists (such as provider
5608 * overrides).
5609 */
5610declare type ProcessProvidersFunction = (providers: Provider[]) => Provider[];
5611
5612/**
5613 * List of slots for a projection. A slot can be either based on a parsed CSS selector
5614 * which will be used to determine nodes which are projected into that slot.
5615 *
5616 * When set to "*", the slot is reserved and can be used for multi-slot projection
5617 * using {@link ViewContainerRef#createComponent}. The last slot that specifies the
5618 * wildcard selector will retrieve all projectable nodes which do not match any selector.
5619 */
5620declare type ProjectionSlots = (ɵCssSelectorList | '*')[];
5621
5622/**
5623 * This mapping is necessary so we can set input properties and output listeners
5624 * properly at runtime when property names are minified or aliased.
5625 *
5626 * Key: unminified / public input or output name
5627 * Value: array containing minified / internal name and related directive index
5628 *
5629 * The value must be an array to support inputs and outputs with the same name
5630 * on the same node.
5631 */
5632declare type PropertyAliases = {
5633 [key: string]: PropertyAliasValue;
5634};
5635
5636/**
5637 * Store the runtime input or output names for all the directives.
5638 *
5639 * i+0: directive instance index
5640 * i+1: privateName
5641 *
5642 * e.g. [0, 'change-minified']
5643 */
5644declare type PropertyAliasValue = (number | string)[];
5645
5646/**
5647 * Describes how the `Injector` should be configured.
5648 * @see ["Dependency Injection Guide"](guide/dependency-injection).
5649 *
5650 * @see `StaticProvider`
5651 *
5652 * @publicApi
5653 */
5654export declare type Provider = TypeProvider | ValueProvider | ClassProvider | ConstructorProvider | ExistingProvider | FactoryProvider | any[];
5655
5656declare interface ProviderDef {
5657 token: any;
5658 value: any;
5659 deps: DepDef[];
5660}
5661
5662declare interface ProviderOverride {
5663 token: any;
5664 flags: ɵNodeFlags;
5665 value: any;
5666 deps: ([ɵDepFlags, any] | any)[];
5667 deprecatedBehavior: boolean;
5668}
5669
5670/**
5671 * @description
5672 *
5673 * Token that can be used to retrieve an instance from an injector or through a query.
5674 *
5675 * @publicApi
5676 */
5677export declare type ProviderToken<T> = Type<T> | AbstractType<T> | InjectionToken<T>;
5678
5679/**
5680 * Testability API.
5681 * `declare` keyword causes tsickle to generate externs, so these methods are
5682 * not renamed by Closure Compiler.
5683 * @publicApi
5684 */
5685declare interface PublicTestability {
5686 isStable(): boolean;
5687 whenStable(callback: Function, timeout?: number, updateCallback?: Function): void;
5688 findProviders(using: any, provider: string, exactMatch: boolean): any[];
5689}
5690
5691declare const QUERIES = 19;
5692
5693/**
5694 * Type of the Query metadata.
5695 *
5696 * @publicApi
5697 */
5698export declare interface Query {
5699 descendants: boolean;
5700 emitDistinctChangesOnly: boolean;
5701 first: boolean;
5702 read: any;
5703 isViewQuery: boolean;
5704 selector: any;
5705 static?: boolean;
5706}
5707
5708/**
5709 * Base class for query metadata.
5710 *
5711 * @see `ContentChildren`.
5712 * @see `ContentChild`.
5713 * @see `ViewChildren`.
5714 * @see `ViewChild`.
5715 *
5716 * @publicApi
5717 */
5718export declare abstract class Query {
5719}
5720
5721declare interface QueryBindingDef {
5722 propName: string;
5723 bindingType: ɵQueryBindingType;
5724}
5725
5726declare interface QueryDef {
5727 id: number;
5728 filterId: number;
5729 bindings: QueryBindingDef[];
5730}
5731
5732/**
5733 * A set of flags to be used with Queries.
5734 *
5735 * NOTE: Ensure changes here are reflected in `packages/compiler/src/render3/view/compiler.ts`
5736 */
5737declare const enum QueryFlags {
5738 /**
5739 * No flags
5740 */
5741 none = 0,
5742 /**
5743 * Whether or not the query should descend into children.
5744 */
5745 descendants = 1,
5746 /**
5747 * The query can be computed statically and hence can be assigned eagerly.
5748 *
5749 * NOTE: Backwards compatibility with ViewEngine.
5750 */
5751 isStatic = 2,
5752 /**
5753 * If the `QueryList` should fire change event only if actual change to query was computed (vs old
5754 * behavior where the change was fired whenever the query was recomputed, even if the recomputed
5755 * query resulted in the same list.)
5756 */
5757 emitDistinctChangesOnly = 4
5758}
5759
5760/**
5761 * An unmodifiable list of items that Angular keeps up to date when the state
5762 * of the application changes.
5763 *
5764 * The type of object that {@link ViewChildren}, {@link ContentChildren}, and {@link QueryList}
5765 * provide.
5766 *
5767 * Implements an iterable interface, therefore it can be used in both ES6
5768 * javascript `for (var i of items)` loops as well as in Angular templates with
5769 * `*ngFor="let i of myList"`.
5770 *
5771 * Changes can be observed by subscribing to the changes `Observable`.
5772 *
5773 * NOTE: In the future this class will implement an `Observable` interface.
5774 *
5775 * @usageNotes
5776 * ### Example
5777 * ```typescript
5778 * @Component({...})
5779 * class Container {
5780 * @ViewChildren(Item) items:QueryList<Item>;
5781 * }
5782 * ```
5783 *
5784 * @publicApi
5785 */
5786export declare class QueryList<T> implements Iterable<T> {
5787 private _emitDistinctChangesOnly;
5788 readonly dirty = true;
5789 private _results;
5790 private _changesDetected;
5791 private _changes;
5792 readonly length: number;
5793 readonly first: T;
5794 readonly last: T;
5795 /**
5796 * Returns `Observable` of `QueryList` notifying the subscriber of changes.
5797 */
5798 get changes(): Observable<any>;
5799 /**
5800 * @param emitDistinctChangesOnly Whether `QueryList.changes` should fire only when actual change
5801 * has occurred. Or if it should fire when query is recomputed. (recomputing could resolve in
5802 * the same result)
5803 */
5804 constructor(_emitDistinctChangesOnly?: boolean);
5805 /**
5806 * Returns the QueryList entry at `index`.
5807 */
5808 get(index: number): T | undefined;
5809 /**
5810 * See
5811 * [Array.map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)
5812 */
5813 map<U>(fn: (item: T, index: number, array: T[]) => U): U[];
5814 /**
5815 * See
5816 * [Array.filter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)
5817 */
5818 filter(fn: (item: T, index: number, array: T[]) => boolean): T[];
5819 /**
5820 * See
5821 * [Array.find](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find)
5822 */
5823 find(fn: (item: T, index: number, array: T[]) => boolean): T | undefined;
5824 /**
5825 * See
5826 * [Array.reduce](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)
5827 */
5828 reduce<U>(fn: (prevValue: U, curValue: T, curIndex: number, array: T[]) => U, init: U): U;
5829 /**
5830 * See
5831 * [Array.forEach](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach)
5832 */
5833 forEach(fn: (item: T, index: number, array: T[]) => void): void;
5834 /**
5835 * See
5836 * [Array.some](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some)
5837 */
5838 some(fn: (value: T, index: number, array: T[]) => boolean): boolean;
5839 /**
5840 * Returns a copy of the internal results list as an Array.
5841 */
5842 toArray(): T[];
5843 toString(): string;
5844 /**
5845 * Updates the stored data of the query list, and resets the `dirty` flag to `false`, so that
5846 * on change detection, it will not notify of changes to the queries, unless a new change
5847 * occurs.
5848 *
5849 * @param resultsTree The query results to store
5850 * @param identityAccessor Optional function for extracting stable object identity from a value
5851 * in the array. This function is executed for each element of the query result list while
5852 * comparing current query list with the new one (provided as a first argument of the `reset`
5853 * function) to detect if the lists are different. If the function is not provided, elements
5854 * are compared as is (without any pre-processing).
5855 */
5856 reset(resultsTree: Array<T | any[]>, identityAccessor?: (value: T) => unknown): void;
5857 /**
5858 * Triggers a change event by emitting on the `changes` {@link EventEmitter}.
5859 */
5860 notifyOnChanges(): void;
5861 /** internal */
5862 setDirty(): void;
5863 /** internal */
5864 destroy(): void;
5865 [Symbol.iterator]: () => Iterator<T>;
5866}
5867
5868declare interface R3DeclareComponentFacade extends R3DeclareDirectiveFacade {
5869 template: string;
5870 isInline?: boolean;
5871 styles?: string[];
5872 components?: R3DeclareUsedDirectiveFacade[];
5873 directives?: R3DeclareUsedDirectiveFacade[];
5874 pipes?: {
5875 [pipeName: string]: OpaqueValue | (() => OpaqueValue);
5876 };
5877 viewProviders?: OpaqueValue;
5878 animations?: OpaqueValue;
5879 changeDetection?: ChangeDetectionStrategy_2;
5880 encapsulation?: ViewEncapsulation_2;
5881 interpolation?: [string, string];
5882 preserveWhitespaces?: boolean;
5883}
5884
5885declare interface R3DeclareDependencyMetadataFacade {
5886 token: OpaqueValue;
5887 attribute?: boolean;
5888 host?: boolean;
5889 optional?: boolean;
5890 self?: boolean;
5891 skipSelf?: boolean;
5892}
5893
5894declare interface R3DeclareDirectiveFacade {
5895 selector?: string;
5896 type: Type_2;
5897 inputs?: {
5898 [classPropertyName: string]: string | [string, string];
5899 };
5900 outputs?: {
5901 [classPropertyName: string]: string;
5902 };
5903 host?: {
5904 attributes?: {
5905 [key: string]: OpaqueValue;
5906 };
5907 listeners?: {
5908 [key: string]: string;
5909 };
5910 properties?: {
5911 [key: string]: string;
5912 };
5913 classAttribute?: string;
5914 styleAttribute?: string;
5915 };
5916 queries?: R3DeclareQueryMetadataFacade[];
5917 viewQueries?: R3DeclareQueryMetadataFacade[];
5918 providers?: OpaqueValue;
5919 exportAs?: string[];
5920 usesInheritance?: boolean;
5921 usesOnChanges?: boolean;
5922}
5923
5924declare interface R3DeclareFactoryFacade {
5925 type: Type_2;
5926 deps: R3DeclareDependencyMetadataFacade[] | 'invalid' | null;
5927 target: ɵɵFactoryTarget;
5928}
5929
5930declare interface R3DeclareInjectableFacade {
5931 type: Type_2;
5932 providedIn?: Type_2 | 'root' | 'platform' | 'any' | null;
5933 useClass?: OpaqueValue;
5934 useFactory?: OpaqueValue;
5935 useExisting?: OpaqueValue;
5936 useValue?: OpaqueValue;
5937 deps?: R3DeclareDependencyMetadataFacade[];
5938}
5939
5940declare interface R3DeclareInjectorFacade {
5941 type: Type_2;
5942 imports?: OpaqueValue[];
5943 providers?: OpaqueValue[];
5944}
5945
5946declare interface R3DeclareNgModuleFacade {
5947 type: Type_2;
5948 bootstrap?: OpaqueValue[] | (() => OpaqueValue[]);
5949 declarations?: OpaqueValue[] | (() => OpaqueValue[]);
5950 imports?: OpaqueValue[] | (() => OpaqueValue[]);
5951 exports?: OpaqueValue[] | (() => OpaqueValue[]);
5952 schemas?: OpaqueValue[];
5953 id?: OpaqueValue;
5954}
5955
5956declare interface R3DeclarePipeFacade {
5957 type: Type_2;
5958 name: string;
5959 pure?: boolean;
5960}
5961
5962declare interface R3DeclareQueryMetadataFacade {
5963 propertyName: string;
5964 first?: boolean;
5965 predicate: OpaqueValue | string[];
5966 descendants?: boolean;
5967 read?: OpaqueValue;
5968 static?: boolean;
5969 emitDistinctChangesOnly?: boolean;
5970}
5971
5972declare interface R3DeclareUsedDirectiveFacade {
5973 selector: string;
5974 type: OpaqueValue | (() => OpaqueValue);
5975 inputs?: string[];
5976 outputs?: string[];
5977 exportAs?: string[];
5978}
5979
5980declare class R3Injector {
5981 readonly parent: Injector;
5982 /**
5983 * Map of tokens to records which contain the instances of those tokens.
5984 * - `null` value implies that we don't have the record. Used by tree-shakable injectors
5985 * to prevent further searches.
5986 */
5987 private records;
5988 /**
5989 * The transitive set of `InjectorType`s which define this injector.
5990 */
5991 private injectorDefTypes;
5992 /**
5993 * Set of values instantiated by this injector which contain `ngOnDestroy` lifecycle hooks.
5994 */
5995 private onDestroy;
5996 /**
5997 * Flag indicating this injector provides the APP_ROOT_SCOPE token, and thus counts as the
5998 * root scope.
5999 */
6000 private readonly scope;
6001 readonly source: string | null;
6002 /**
6003 * Flag indicating that this injector was previously destroyed.
6004 */
6005 get destroyed(): boolean;
6006 private _destroyed;
6007 constructor(def: InjectorType<any>, additionalProviders: StaticProvider[] | null, parent: Injector, source?: string | null);
6008 /**
6009 * Destroy the injector and release references to every instance or provider associated with it.
6010 *
6011 * Also calls the `OnDestroy` lifecycle hooks of every instance that was created for which a
6012 * hook was found.
6013 */
6014 destroy(): void;
6015 get<T>(token: ProviderToken<T>, notFoundValue?: any, flags?: InjectFlags): T;
6016 toString(): string;
6017 private assertNotDestroyed;
6018 /**
6019 * Add an `InjectorType` or `InjectorTypeWithProviders` and all of its transitive providers
6020 * to this injector.
6021 *
6022 * If an `InjectorTypeWithProviders` that declares providers besides the type is specified,
6023 * the function will return "true" to indicate that the providers of the type definition need
6024 * to be processed. This allows us to process providers of injector types after all imports of
6025 * an injector definition are processed. (following View Engine semantics: see FW-1349)
6026 */
6027 private processInjectorType;
6028 /**
6029 * Process a `SingleProvider` and add it.
6030 */
6031 private processProvider;
6032 private hydrate;
6033 private injectableDefInScope;
6034}
6035
6036declare interface RComment extends RNode {
6037 textContent: string | null;
6038}
6039
6040declare interface RCssStyleDeclaration {
6041 removeProperty(propertyName: string): string;
6042 setProperty(propertyName: string, value: string | null, priority?: string): void;
6043}
6044
6045declare interface RDomTokenList {
6046 add(token: string): void;
6047 remove(token: string): void;
6048}
6049
6050/**
6051 * A ReflectiveDependency injection container used for instantiating objects and resolving
6052 * dependencies.
6053 *
6054 * An `Injector` is a replacement for a `new` operator, which can automatically resolve the
6055 * constructor dependencies.
6056 *
6057 * In typical use, application code asks for the dependencies in the constructor and they are
6058 * resolved by the `Injector`.
6059 *
6060 * @usageNotes
6061 * ### Example
6062 *
6063 * The following example creates an `Injector` configured to create `Engine` and `Car`.
6064 *
6065 * ```typescript
6066 * @Injectable()
6067 * class Engine {
6068 * }
6069 *
6070 * @Injectable()
6071 * class Car {
6072 * constructor(public engine:Engine) {}
6073 * }
6074 *
6075 * var injector = ReflectiveInjector.resolveAndCreate([Car, Engine]);
6076 * var car = injector.get(Car);
6077 * expect(car instanceof Car).toBe(true);
6078 * expect(car.engine instanceof Engine).toBe(true);
6079 * ```
6080 *
6081 * Notice, we don't use the `new` operator because we explicitly want to have the `Injector`
6082 * resolve all of the object's dependencies automatically.
6083 *
6084 * @deprecated from v5 - slow and brings in a lot of code, Use `Injector.create` instead.
6085 * @publicApi
6086 */
6087export declare abstract class ReflectiveInjector implements Injector {
6088 /**
6089 * Turns an array of provider definitions into an array of resolved providers.
6090 *
6091 * A resolution is a process of flattening multiple nested arrays and converting individual
6092 * providers into an array of `ResolvedReflectiveProvider`s.
6093 *
6094 * @usageNotes
6095 * ### Example
6096 *
6097 * ```typescript
6098 * @Injectable()
6099 * class Engine {
6100 * }
6101 *
6102 * @Injectable()
6103 * class Car {
6104 * constructor(public engine:Engine) {}
6105 * }
6106 *
6107 * var providers = ReflectiveInjector.resolve([Car, [[Engine]]]);
6108 *
6109 * expect(providers.length).toEqual(2);
6110 *
6111 * expect(providers[0] instanceof ResolvedReflectiveProvider).toBe(true);
6112 * expect(providers[0].key.displayName).toBe("Car");
6113 * expect(providers[0].dependencies.length).toEqual(1);
6114 * expect(providers[0].factory).toBeDefined();
6115 *
6116 * expect(providers[1].key.displayName).toBe("Engine");
6117 * });
6118 * ```
6119 *
6120 */
6121 static resolve(providers: Provider[]): ResolvedReflectiveProvider[];
6122 /**
6123 * Resolves an array of providers and creates an injector from those providers.
6124 *
6125 * The passed-in providers can be an array of `Type`, `Provider`,
6126 * or a recursive array of more providers.
6127 *
6128 * @usageNotes
6129 * ### Example
6130 *
6131 * ```typescript
6132 * @Injectable()
6133 * class Engine {
6134 * }
6135 *
6136 * @Injectable()
6137 * class Car {
6138 * constructor(public engine:Engine) {}
6139 * }
6140 *
6141 * var injector = ReflectiveInjector.resolveAndCreate([Car, Engine]);
6142 * expect(injector.get(Car) instanceof Car).toBe(true);
6143 * ```
6144 */
6145 static resolveAndCreate(providers: Provider[], parent?: Injector): ReflectiveInjector;
6146 /**
6147 * Creates an injector from previously resolved providers.
6148 *
6149 * This API is the recommended way to construct injectors in performance-sensitive parts.
6150 *
6151 * @usageNotes
6152 * ### Example
6153 *
6154 * ```typescript
6155 * @Injectable()
6156 * class Engine {
6157 * }
6158 *
6159 * @Injectable()
6160 * class Car {
6161 * constructor(public engine:Engine) {}
6162 * }
6163 *
6164 * var providers = ReflectiveInjector.resolve([Car, Engine]);
6165 * var injector = ReflectiveInjector.fromResolvedProviders(providers);
6166 * expect(injector.get(Car) instanceof Car).toBe(true);
6167 * ```
6168 */
6169 static fromResolvedProviders(providers: ResolvedReflectiveProvider[], parent?: Injector): ReflectiveInjector;
6170 /**
6171 * Parent of this injector.
6172 *
6173 * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection.
6174 * -->
6175 */
6176 abstract get parent(): Injector | null;
6177 /**
6178 * Resolves an array of providers and creates a child injector from those providers.
6179 *
6180 * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection.
6181 * -->
6182 *
6183 * The passed-in providers can be an array of `Type`, `Provider`,
6184 * or a recursive array of more providers.
6185 *
6186 * @usageNotes
6187 * ### Example
6188 *
6189 * ```typescript
6190 * class ParentProvider {}
6191 * class ChildProvider {}
6192 *
6193 * var parent = ReflectiveInjector.resolveAndCreate([ParentProvider]);
6194 * var child = parent.resolveAndCreateChild([ChildProvider]);
6195 *
6196 * expect(child.get(ParentProvider) instanceof ParentProvider).toBe(true);
6197 * expect(child.get(ChildProvider) instanceof ChildProvider).toBe(true);
6198 * expect(child.get(ParentProvider)).toBe(parent.get(ParentProvider));
6199 * ```
6200 */
6201 abstract resolveAndCreateChild(providers: Provider[]): ReflectiveInjector;
6202 /**
6203 * Creates a child injector from previously resolved providers.
6204 *
6205 * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection.
6206 * -->
6207 *
6208 * This API is the recommended way to construct injectors in performance-sensitive parts.
6209 *
6210 * @usageNotes
6211 * ### Example
6212 *
6213 * ```typescript
6214 * class ParentProvider {}
6215 * class ChildProvider {}
6216 *
6217 * var parentProviders = ReflectiveInjector.resolve([ParentProvider]);
6218 * var childProviders = ReflectiveInjector.resolve([ChildProvider]);
6219 *
6220 * var parent = ReflectiveInjector.fromResolvedProviders(parentProviders);
6221 * var child = parent.createChildFromResolved(childProviders);
6222 *
6223 * expect(child.get(ParentProvider) instanceof ParentProvider).toBe(true);
6224 * expect(child.get(ChildProvider) instanceof ChildProvider).toBe(true);
6225 * expect(child.get(ParentProvider)).toBe(parent.get(ParentProvider));
6226 * ```
6227 */
6228 abstract createChildFromResolved(providers: ResolvedReflectiveProvider[]): ReflectiveInjector;
6229 /**
6230 * Resolves a provider and instantiates an object in the context of the injector.
6231 *
6232 * The created object does not get cached by the injector.
6233 *
6234 * @usageNotes
6235 * ### Example
6236 *
6237 * ```typescript
6238 * @Injectable()
6239 * class Engine {
6240 * }
6241 *
6242 * @Injectable()
6243 * class Car {
6244 * constructor(public engine:Engine) {}
6245 * }
6246 *
6247 * var injector = ReflectiveInjector.resolveAndCreate([Engine]);
6248 *
6249 * var car = injector.resolveAndInstantiate(Car);
6250 * expect(car.engine).toBe(injector.get(Engine));
6251 * expect(car).not.toBe(injector.resolveAndInstantiate(Car));
6252 * ```
6253 */
6254 abstract resolveAndInstantiate(provider: Provider): any;
6255 /**
6256 * Instantiates an object using a resolved provider in the context of the injector.
6257 *
6258 * The created object does not get cached by the injector.
6259 *
6260 * @usageNotes
6261 * ### Example
6262 *
6263 * ```typescript
6264 * @Injectable()
6265 * class Engine {
6266 * }
6267 *
6268 * @Injectable()
6269 * class Car {
6270 * constructor(public engine:Engine) {}
6271 * }
6272 *
6273 * var injector = ReflectiveInjector.resolveAndCreate([Engine]);
6274 * var carProvider = ReflectiveInjector.resolve([Car])[0];
6275 * var car = injector.instantiateResolved(carProvider);
6276 * expect(car.engine).toBe(injector.get(Engine));
6277 * expect(car).not.toBe(injector.instantiateResolved(carProvider));
6278 * ```
6279 */
6280 abstract instantiateResolved(provider: ResolvedReflectiveProvider): any;
6281 abstract get(token: any, notFoundValue?: any): any;
6282}
6283
6284
6285/**
6286 * A unique object used for retrieving items from the {@link ReflectiveInjector}.
6287 *
6288 * Keys have:
6289 * - a system-wide unique `id`.
6290 * - a `token`.
6291 *
6292 * `Key` is used internally by {@link ReflectiveInjector} because its system-wide unique `id` allows
6293 * the
6294 * injector to store created objects in a more efficient way.
6295 *
6296 * `Key` should not be created directly. {@link ReflectiveInjector} creates keys automatically when
6297 * resolving
6298 * providers.
6299 *
6300 * @deprecated No replacement
6301 * @publicApi
6302 */
6303export declare class ReflectiveKey {
6304 token: Object;
6305 id: number;
6306 readonly displayName: string;
6307 /**
6308 * Private
6309 */
6310 constructor(token: Object, id: number);
6311 /**
6312 * Retrieves a `Key` for a token.
6313 */
6314 static get(token: Object): ReflectiveKey;
6315 /**
6316 * @returns the number of keys registered in the system.
6317 */
6318 static get numberOfKeys(): number;
6319}
6320
6321/**
6322 * Subset of API needed for writing attributes, properties, and setting up
6323 * listeners on Element.
6324 */
6325declare interface RElement extends RNode {
6326 style: RCssStyleDeclaration;
6327 classList: RDomTokenList;
6328 className: string;
6329 textContent: string | null;
6330 setAttribute(name: string, value: string | TrustedHTML | TrustedScript | TrustedScriptURL): void;
6331 removeAttribute(name: string): void;
6332 setAttributeNS(namespaceURI: string, qualifiedName: string, value: string | TrustedHTML | TrustedScript | TrustedScriptURL): void;
6333 addEventListener(type: string, listener: EventListener, useCapture?: boolean): void;
6334 removeEventListener(type: string, listener?: EventListener, options?: boolean): void;
6335 setProperty?(name: string, value: any): void;
6336}
6337
6338/**
6339 * This is a synthetic lifecycle hook which gets inserted into `TView.preOrderHooks` to simulate
6340 * `ngOnChanges`.
6341 *
6342 * The hook reads the `NgSimpleChangesStore` data from the component instance and if changes are
6343 * found it invokes `ngOnChanges` on the component instance.
6344 *
6345 * @param this Component instance. Because this function gets inserted into `TView.preOrderHooks`,
6346 * it is guaranteed to be called with component instance.
6347 */
6348declare function rememberChangeHistoryAndInvokeOnChangesHook(this: OnChanges): void;
6349
6350declare const RENDERER = 11;
6351
6352/**
6353 * Extend this base class to implement custom rendering. By default, Angular
6354 * renders a template into DOM. You can use custom rendering to intercept
6355 * rendering calls, or to render to something other than DOM.
6356 *
6357 * Create your custom renderer using `RendererFactory2`.
6358 *
6359 * Use a custom renderer to bypass Angular's templating and
6360 * make custom UI changes that can't be expressed declaratively.
6361 * For example if you need to set a property or an attribute whose name is
6362 * not statically known, use the `setProperty()` or
6363 * `setAttribute()` method.
6364 *
6365 * @publicApi
6366 */
6367export declare abstract class Renderer2 {
6368 /**
6369 * Use to store arbitrary developer-defined data on a renderer instance,
6370 * as an object containing key-value pairs.
6371 * This is useful for renderers that delegate to other renderers.
6372 */
6373 abstract get data(): {
6374 [key: string]: any;
6375 };
6376 /**
6377 * Implement this callback to destroy the renderer or the host element.
6378 */
6379 abstract destroy(): void;
6380 /**
6381 * Implement this callback to create an instance of the host element.
6382 * @param name An identifying name for the new element, unique within the namespace.
6383 * @param namespace The namespace for the new element.
6384 * @returns The new element.
6385 */
6386 abstract createElement(name: string, namespace?: string | null): any;
6387 /**
6388 * Implement this callback to add a comment to the DOM of the host element.
6389 * @param value The comment text.
6390 * @returns The modified element.
6391 */
6392 abstract createComment(value: string): any;
6393 /**
6394 * Implement this callback to add text to the DOM of the host element.
6395 * @param value The text string.
6396 * @returns The modified element.
6397 */
6398 abstract createText(value: string): any;
6399 /**
6400 * If null or undefined, the view engine won't call it.
6401 * This is used as a performance optimization for production mode.
6402 */
6403 destroyNode: ((node: any) => void) | null;
6404 /**
6405 * Appends a child to a given parent node in the host element DOM.
6406 * @param parent The parent node.
6407 * @param newChild The new child node.
6408 */
6409 abstract appendChild(parent: any, newChild: any): void;
6410 /**
6411 * Implement this callback to insert a child node at a given position in a parent node
6412 * in the host element DOM.
6413 * @param parent The parent node.
6414 * @param newChild The new child nodes.
6415 * @param refChild The existing child node before which `newChild` is inserted.
6416 * @param isMove Optional argument which signifies if the current `insertBefore` is a result of a
6417 * move. Animation uses this information to trigger move animations. In the past the Animation
6418 * would always assume that any `insertBefore` is a move. This is not strictly true because
6419 * with runtime i18n it is possible to invoke `insertBefore` as a result of i18n and it should
6420 * not trigger an animation move.
6421 */
6422 abstract insertBefore(parent: any, newChild: any, refChild: any, isMove?: boolean): void;
6423 /**
6424 * Implement this callback to remove a child node from the host element's DOM.
6425 * @param parent The parent node.
6426 * @param oldChild The child node to remove.
6427 * @param isHostElement Optionally signal to the renderer whether this element is a host element
6428 * or not
6429 */
6430 abstract removeChild(parent: any, oldChild: any, isHostElement?: boolean): void;
6431 /**
6432 * Implement this callback to prepare an element to be bootstrapped
6433 * as a root element, and return the element instance.
6434 * @param selectorOrNode The DOM element.
6435 * @param preserveContent Whether the contents of the root element
6436 * should be preserved, or cleared upon bootstrap (default behavior).
6437 * Use with `ViewEncapsulation.ShadowDom` to allow simple native
6438 * content projection via `<slot>` elements.
6439 * @returns The root element.
6440 */
6441 abstract selectRootElement(selectorOrNode: string | any, preserveContent?: boolean): any;
6442 /**
6443 * Implement this callback to get the parent of a given node
6444 * in the host element's DOM.
6445 * @param node The child node to query.
6446 * @returns The parent node, or null if there is no parent.
6447 * For WebWorkers, always returns true.
6448 * This is because the check is synchronous,
6449 * and the caller can't rely on checking for null.
6450 */
6451 abstract parentNode(node: any): any;
6452 /**
6453 * Implement this callback to get the next sibling node of a given node
6454 * in the host element's DOM.
6455 * @returns The sibling node, or null if there is no sibling.
6456 * For WebWorkers, always returns a value.
6457 * This is because the check is synchronous,
6458 * and the caller can't rely on checking for null.
6459 */
6460 abstract nextSibling(node: any): any;
6461 /**
6462 * Implement this callback to set an attribute value for an element in the DOM.
6463 * @param el The element.
6464 * @param name The attribute name.
6465 * @param value The new value.
6466 * @param namespace The namespace.
6467 */
6468 abstract setAttribute(el: any, name: string, value: string, namespace?: string | null): void;
6469 /**
6470 * Implement this callback to remove an attribute from an element in the DOM.
6471 * @param el The element.
6472 * @param name The attribute name.
6473 * @param namespace The namespace.
6474 */
6475 abstract removeAttribute(el: any, name: string, namespace?: string | null): void;
6476 /**
6477 * Implement this callback to add a class to an element in the DOM.
6478 * @param el The element.
6479 * @param name The class name.
6480 */
6481 abstract addClass(el: any, name: string): void;
6482 /**
6483 * Implement this callback to remove a class from an element in the DOM.
6484 * @param el The element.
6485 * @param name The class name.
6486 */
6487 abstract removeClass(el: any, name: string): void;
6488 /**
6489 * Implement this callback to set a CSS style for an element in the DOM.
6490 * @param el The element.
6491 * @param style The name of the style.
6492 * @param value The new value.
6493 * @param flags Flags for style variations. No flags are set by default.
6494 */
6495 abstract setStyle(el: any, style: string, value: any, flags?: RendererStyleFlags2): void;
6496 /**
6497 * Implement this callback to remove the value from a CSS style for an element in the DOM.
6498 * @param el The element.
6499 * @param style The name of the style.
6500 * @param flags Flags for style variations to remove, if set. ???
6501 */
6502 abstract removeStyle(el: any, style: string, flags?: RendererStyleFlags2): void;
6503 /**
6504 * Implement this callback to set the value of a property of an element in the DOM.
6505 * @param el The element.
6506 * @param name The property name.
6507 * @param value The new value.
6508 */
6509 abstract setProperty(el: any, name: string, value: any): void;
6510 /**
6511 * Implement this callback to set the value of a node in the host element.
6512 * @param node The node.
6513 * @param value The new value.
6514 */
6515 abstract setValue(node: any, value: string): void;
6516 /**
6517 * Implement this callback to start an event listener.
6518 * @param target The context in which to listen for events. Can be
6519 * the entire window or document, the body of the document, or a specific
6520 * DOM element.
6521 * @param eventName The event to listen for.
6522 * @param callback A handler function to invoke when the event occurs.
6523 * @returns An "unlisten" function for disposing of this handler.
6524 */
6525 abstract listen(target: 'window' | 'document' | 'body' | any, eventName: string, callback: (event: any) => boolean | void): () => void;
6526}
6527
6528declare type Renderer3 = ObjectOrientedRenderer3 | ProceduralRenderer3;
6529
6530declare const RENDERER_FACTORY = 10;
6531
6532/**
6533 * Creates and initializes a custom renderer that implements the `Renderer2` base class.
6534 *
6535 * @publicApi
6536 */
6537export declare abstract class RendererFactory2 {
6538 /**
6539 * Creates and initializes a custom renderer for a host DOM element.
6540 * @param hostElement The element to render.
6541 * @param type The base class to implement.
6542 * @returns The new custom renderer instance.
6543 */
6544 abstract createRenderer(hostElement: any, type: RendererType2 | null): Renderer2;
6545 /**
6546 * A callback invoked when rendering has begun.
6547 */
6548 abstract begin?(): void;
6549 /**
6550 * A callback invoked when rendering has completed.
6551 */
6552 abstract end?(): void;
6553 /**
6554 * Use with animations test-only mode. Notifies the test when rendering has completed.
6555 * @returns The asynchronous result of the developer-defined function.
6556 */
6557 abstract whenRenderingDone?(): Promise<any>;
6558}
6559
6560declare interface RendererFactory3 {
6561 createRenderer(hostElement: RElement | null, rendererType: RendererType2 | null): Renderer3;
6562 begin?(): void;
6563 end?(): void;
6564}
6565
6566/**
6567 * Flags for renderer-specific style modifiers.
6568 * @publicApi
6569 */
6570export declare enum RendererStyleFlags2 {
6571 /**
6572 * Marks a style as important.
6573 */
6574 Important = 1,
6575 /**
6576 * Marks a style as using dash case naming (this-is-dash-case).
6577 */
6578 DashCase = 2
6579}
6580
6581declare enum RendererStyleFlags3 {
6582 Important = 1,
6583 DashCase = 2
6584}
6585
6586/**
6587 * Used by `RendererFactory2` to associate custom rendering data and styles
6588 * with a rendering implementation.
6589 * @publicApi
6590 */
6591export declare interface RendererType2 {
6592 /**
6593 * A unique identifying string for the new renderer, used when creating
6594 * unique styles for encapsulation.
6595 */
6596 id: string;
6597 /**
6598 * The view encapsulation type, which determines how styles are applied to
6599 * DOM elements. One of
6600 * - `Emulated` (default): Emulate native scoping of styles.
6601 * - `Native`: Use the native encapsulation mechanism of the renderer.
6602 * - `ShadowDom`: Use modern [Shadow
6603 * DOM](https://w3c.github.io/webcomponents/spec/shadow/) and
6604 * create a ShadowRoot for component's host element.
6605 * - `None`: Do not provide any template or style encapsulation.
6606 */
6607 encapsulation: ViewEncapsulation;
6608 /**
6609 * Defines CSS styles to be stored on a renderer instance.
6610 */
6611 styles: (string | any[])[];
6612 /**
6613 * Defines arbitrary developer-defined data to be stored on a renderer instance.
6614 * This is useful for renderers that delegate to other renderers.
6615 */
6616 data: {
6617 [kind: string]: any;
6618 };
6619}
6620
6621/**
6622 * An internal resolved representation of a factory function created by resolving `Provider`.
6623 * @publicApi
6624 */
6625export declare class ResolvedReflectiveFactory {
6626 /**
6627 * Factory function which can return an instance of an object represented by a key.
6628 */
6629 factory: Function;
6630 /**
6631 * Arguments (dependencies) to the `factory` function.
6632 */
6633 dependencies: ɵangular_packages_core_core_e[];
6634 constructor(
6635 /**
6636 * Factory function which can return an instance of an object represented by a key.
6637 */
6638 factory: Function,
6639 /**
6640 * Arguments (dependencies) to the `factory` function.
6641 */
6642 dependencies: ɵangular_packages_core_core_e[]);
6643}
6644
6645/**
6646 * An internal resolved representation of a `Provider` used by the `Injector`.
6647 *
6648 * @usageNotes
6649 * This is usually created automatically by `Injector.resolveAndCreate`.
6650 *
6651 * It can be created manually, as follows:
6652 *
6653 * ### Example
6654 *
6655 * ```typescript
6656 * var resolvedProviders = Injector.resolve([{ provide: 'message', useValue: 'Hello' }]);
6657 * var injector = Injector.fromResolvedProviders(resolvedProviders);
6658 *
6659 * expect(injector.get('message')).toEqual('Hello');
6660 * ```
6661 *
6662 * @publicApi
6663 */
6664export declare interface ResolvedReflectiveProvider {
6665 /**
6666 * A key, usually a `Type<any>`.
6667 */
6668 key: ReflectiveKey;
6669 /**
6670 * Factory function which can return an instance of an object represented by a key.
6671 */
6672 resolvedFactories: ResolvedReflectiveFactory[];
6673 /**
6674 * Indicates if the provider is a multi-provider or a regular provider.
6675 */
6676 multiProvider: boolean;
6677}
6678
6679/**
6680 * Lazily retrieves the reference value from a forwardRef.
6681 *
6682 * Acts as the identity function when given a non-forward-ref value.
6683 *
6684 * @usageNotes
6685 * ### Example
6686 *
6687 * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='resolve_forward_ref'}
6688 *
6689 * @see `forwardRef`
6690 * @publicApi
6691 */
6692export declare function resolveForwardRef<T>(type: T): T;
6693
6694/**
6695 * The goal here is to make sure that the browser DOM API is the Renderer.
6696 * We do this by defining a subset of DOM API to be the renderer and then
6697 * use that at runtime for rendering.
6698 *
6699 * At runtime we can then use the DOM api directly, in server or web-worker
6700 * it will be easy to implement such API.
6701 */
6702/** Subset of API needed for appending elements and text nodes. */
6703declare interface RNode {
6704 /**
6705 * Returns the parent Element, Document, or DocumentFragment
6706 */
6707 parentNode: RNode | null;
6708 /**
6709 * Returns the parent Element if there is one
6710 */
6711 parentElement: RElement | null;
6712 /**
6713 * Gets the Node immediately following this one in the parent's childNodes
6714 */
6715 nextSibling: RNode | null;
6716 /**
6717 * Removes a child from the current node and returns the removed node
6718 * @param oldChild the child node to remove
6719 */
6720 removeChild(oldChild: RNode): RNode;
6721 /**
6722 * Insert a child node.
6723 *
6724 * Used exclusively for adding View root nodes into ViewAnchor location.
6725 */
6726 insertBefore(newChild: RNode, refChild: RNode | null, isViewRoot: boolean): void;
6727 /**
6728 * Append a child node.
6729 *
6730 * Used exclusively for building up DOM which are static (ie not View roots)
6731 */
6732 appendChild(newChild: RNode): RNode;
6733}
6734
6735/**
6736 * RootContext contains information which is shared for all components which
6737 * were bootstrapped with {@link renderComponent}.
6738 */
6739declare interface RootContext {
6740 /**
6741 * A function used for scheduling change detection in the future. Usually
6742 * this is `requestAnimationFrame`.
6743 */
6744 scheduler: (workFn: () => void) => void;
6745 /**
6746 * A promise which is resolved when all components are considered clean (not dirty).
6747 *
6748 * This promise is overwritten every time a first call to {@link markDirty} is invoked.
6749 */
6750 clean: Promise<null>;
6751 /**
6752 * RootComponents - The components that were instantiated by the call to
6753 * {@link renderComponent}.
6754 */
6755 components: {}[];
6756 /**
6757 * The player flushing handler to kick off all animations
6758 */
6759 playerHandler: ɵPlayerHandler | null;
6760 /**
6761 * What render-related operations to run once a scheduler has been set
6762 */
6763 flags: RootContextFlags;
6764}
6765
6766declare const enum RootContextFlags {
6767 Empty = 0,
6768 DetectChanges = 1,
6769 FlushPlayers = 2
6770}
6771
6772declare interface RootData {
6773 injector: Injector;
6774 ngModule: NgModuleRef<any>;
6775 projectableNodes: any[][];
6776 selectorOrNode: any;
6777 renderer: Renderer2;
6778 rendererFactory: RendererFactory2;
6779 errorHandler: ErrorHandler;
6780 sanitizer: Sanitizer;
6781}
6782
6783declare interface RText extends RNode {
6784 textContent: string | null;
6785}
6786
6787declare const SANITIZER = 12;
6788
6789/**
6790 * Sanitizer is used by the views to sanitize potentially dangerous values.
6791 *
6792 * @publicApi
6793 */
6794export declare abstract class Sanitizer {
6795 abstract sanitize(context: SecurityContext, value: {} | string | null): string | null;
6796 /** @nocollapse */
6797 static ɵprov: unknown;
6798}
6799
6800/**
6801 * Function used to sanitize the value before writing it into the renderer.
6802 */
6803declare type SanitizerFn = (value: any, tagName?: string, propName?: string) => string | TrustedHTML | TrustedScript | TrustedScriptURL;
6804
6805
6806/**
6807 * A schema definition associated with an NgModule.
6808 *
6809 * @see `@NgModule`, `CUSTOM_ELEMENTS_SCHEMA`, `NO_ERRORS_SCHEMA`
6810 *
6811 * @param name The name of a defined schema.
6812 *
6813 * @publicApi
6814 */
6815export declare interface SchemaMetadata {
6816 name: string;
6817}
6818
6819
6820/**
6821 * A SecurityContext marks a location that has dangerous security implications, e.g. a DOM property
6822 * like `innerHTML` that could cause Cross Site Scripting (XSS) security bugs when improperly
6823 * handled.
6824 *
6825 * See DomSanitizer for more details on security in Angular applications.
6826 *
6827 * @publicApi
6828 */
6829export declare enum SecurityContext {
6830 NONE = 0,
6831 HTML = 1,
6832 STYLE = 2,
6833 SCRIPT = 3,
6834 URL = 4,
6835 RESOURCE_URL = 5
6836}
6837
6838/** Flags used to build up CssSelectors */
6839declare const enum SelectorFlags {
6840 /** Indicates this is the beginning of a new negative selector */
6841 NOT = 1,
6842 /** Mode for matching attributes */
6843 ATTRIBUTE = 2,
6844 /** Mode for matching tag names */
6845 ELEMENT = 4,
6846 /** Mode for matching class names */
6847 CLASS = 8
6848}
6849
6850/**
6851 * Type of the Self metadata.
6852 *
6853 * @publicApi
6854 */
6855export declare interface Self {
6856}
6857
6858/**
6859 * Self decorator and metadata.
6860 *
6861 * @Annotation
6862 * @publicApi
6863 */
6864export declare const Self: SelfDecorator;
6865
6866/**
6867 * Type of the Self decorator / constructor function.
6868 *
6869 * @publicApi
6870 */
6871export declare interface SelfDecorator {
6872 /**
6873 * Parameter decorator to be used on constructor parameters,
6874 * which tells the DI framework to start dependency resolution from the local injector.
6875 *
6876 * Resolution works upward through the injector hierarchy, so the children
6877 * of this class must configure their own providers or be prepared for a `null` result.
6878 *
6879 * @usageNotes
6880 *
6881 * In the following example, the dependency can be resolved
6882 * by the local injector when instantiating the class itself, but not
6883 * when instantiating a child.
6884 *
6885 * <code-example path="core/di/ts/metadata_spec.ts" region="Self">
6886 * </code-example>
6887 *
6888 * @see `SkipSelf`
6889 * @see `Optional`
6890 *
6891 */
6892 (): any;
6893 new (): Self;
6894}
6895
6896/**
6897 * Set the {@link GetTestability} implementation used by the Angular testing framework.
6898 * @publicApi
6899 */
6900export declare function setTestabilityGetter(getter: GetTestability): void;
6901
6902
6903/**
6904 * Represents a basic change from a previous to a new value for a single
6905 * property on a directive instance. Passed as a value in a
6906 * {@link SimpleChanges} object to the `ngOnChanges` hook.
6907 *
6908 * @see `OnChanges`
6909 *
6910 * @publicApi
6911 */
6912export declare class SimpleChange {
6913 previousValue: any;
6914 currentValue: any;
6915 firstChange: boolean;
6916 constructor(previousValue: any, currentValue: any, firstChange: boolean);
6917 /**
6918 * Check whether the new value is the first value assigned.
6919 */
6920 isFirstChange(): boolean;
6921}
6922
6923/**
6924 * A hashtable of changes represented by {@link SimpleChange} objects stored
6925 * at the declared property name they belong to on a Directive or Component. This is
6926 * the type passed to the `ngOnChanges` hook.
6927 *
6928 * @see `OnChanges`
6929 *
6930 * @publicApi
6931 */
6932export declare interface SimpleChanges {
6933 [propName: string]: SimpleChange;
6934}
6935
6936/**
6937 * Type of the `SkipSelf` metadata.
6938 *
6939 * @publicApi
6940 */
6941export declare interface SkipSelf {
6942}
6943
6944/**
6945 * `SkipSelf` decorator and metadata.
6946 *
6947 * @Annotation
6948 * @publicApi
6949 */
6950export declare const SkipSelf: SkipSelfDecorator;
6951
6952/**
6953 * Type of the `SkipSelf` decorator / constructor function.
6954 *
6955 * @publicApi
6956 */
6957export declare interface SkipSelfDecorator {
6958 /**
6959 * Parameter decorator to be used on constructor parameters,
6960 * which tells the DI framework to start dependency resolution from the parent injector.
6961 * Resolution works upward through the injector hierarchy, so the local injector
6962 * is not checked for a provider.
6963 *
6964 * @usageNotes
6965 *
6966 * In the following example, the dependency can be resolved when
6967 * instantiating a child, but not when instantiating the class itself.
6968 *
6969 * <code-example path="core/di/ts/metadata_spec.ts" region="SkipSelf">
6970 * </code-example>
6971 *
6972 * @see [Dependency Injection guide](guide/dependency-injection-in-action#skip).
6973 * @see `Self`
6974 * @see `Optional`
6975 *
6976 */
6977 (): any;
6978 new (): SkipSelf;
6979}
6980
6981/**
6982 * Configures the `Injector` to return an instance of `useClass` for a token.
6983 * @see ["Dependency Injection Guide"](guide/dependency-injection).
6984 *
6985 * @usageNotes
6986 *
6987 * {@example core/di/ts/provider_spec.ts region='StaticClassProvider'}
6988 *
6989 * Note that following two providers are not equal:
6990 *
6991 * {@example core/di/ts/provider_spec.ts region='StaticClassProviderDifference'}
6992 *
6993 * ### Multi-value example
6994 *
6995 * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
6996 *
6997 * @publicApi
6998 */
6999export declare interface StaticClassProvider extends StaticClassSansProvider {
7000 /**
7001 * An injection token. Typically an instance of `Type` or `InjectionToken`, but can be `any`.
7002 */
7003 provide: any;
7004 /**
7005 * When true, injector returns an array of instances. This is useful to allow multiple
7006 * providers spread across many files to provide configuration information to a common token.
7007 */
7008 multi?: boolean;
7009}
7010
7011/**
7012 * Configures the `Injector` to return an instance of `useClass` for a token.
7013 * Base for `StaticClassProvider` decorator.
7014 *
7015 * @publicApi
7016 */
7017export declare interface StaticClassSansProvider {
7018 /**
7019 * An optional class to instantiate for the `token`. By default, the `provide`
7020 * class is instantiated.
7021 */
7022 useClass: Type<any>;
7023 /**
7024 * A list of `token`s to be resolved by the injector. The list of values is then
7025 * used as arguments to the `useClass` constructor.
7026 */
7027 deps: any[];
7028}
7029
7030/**
7031 * Describes how an `Injector` should be configured as static (that is, without reflection).
7032 * A static provider provides tokens to an injector for various types of dependencies.
7033 *
7034 * @see `Injector.create()`.
7035 * @see ["Dependency Injection Guide"](guide/dependency-injection-providers).
7036 *
7037 * @publicApi
7038 */
7039export declare type StaticProvider = ValueProvider | ExistingProvider | StaticClassProvider | ConstructorProvider | FactoryProvider | any[];
7040
7041/**
7042 * NgModuleFactoryLoader that uses SystemJS to load NgModuleFactory
7043 * @publicApi
7044 * @deprecated the `string` form of `loadChildren` is deprecated, and `SystemJsNgModuleLoader` is
7045 * part of its implementation. See `LoadChildren` for more details.
7046 */
7047export declare class SystemJsNgModuleLoader implements NgModuleFactoryLoader {
7048 private _compiler;
7049 private _config;
7050 constructor(_compiler: Compiler, config?: SystemJsNgModuleLoaderConfig);
7051 load(path: string): Promise<NgModuleFactory<any>>;
7052 private loadAndCompile;
7053 private loadFactory;
7054}
7055
7056/**
7057 * Configuration for SystemJsNgModuleLoader.
7058 * token.
7059 *
7060 * @publicApi
7061 * @deprecated the `string` form of `loadChildren` is deprecated, and `SystemJsNgModuleLoaderConfig`
7062 * is part of its implementation. See `LoadChildren` for more details.
7063 */
7064export declare abstract class SystemJsNgModuleLoaderConfig {
7065 /**
7066 * Prefix to add when computing the name of the factory module for a given module name.
7067 */
7068 factoryPathPrefix: string;
7069 /**
7070 * Suffix to add when computing the name of the factory module for a given module name.
7071 */
7072 factoryPathSuffix: string;
7073}
7074
7075declare const T_HOST = 6;
7076
7077/**
7078 * A combination of:
7079 * - Attribute names and values.
7080 * - Special markers acting as flags to alter attributes processing.
7081 * - Parsed ngProjectAs selectors.
7082 */
7083declare type TAttributes = (string | ɵAttributeMarker | CssSelector)[];
7084
7085/**
7086 * Constants that are associated with a view. Includes:
7087 * - Attribute arrays.
7088 * - Local definition arrays.
7089 * - Translated messages (i18n).
7090 */
7091declare type TConstants = (TAttributes | string)[];
7092
7093/**
7094 * Factory function that returns an array of consts. Consts can be represented as a function in
7095 * case any additional statements are required to define consts in the list. An example is i18n
7096 * where additional i18n calls are generated, which should be executed when consts are requested
7097 * for the first time.
7098 */
7099declare type TConstantsFactory = () => TConstants;
7100
7101/**
7102 * TConstants type that describes how the `consts` field is generated on ComponentDef: it can be
7103 * either an array or a factory function that returns that array.
7104 */
7105declare type TConstantsOrFactory = TConstants | TConstantsFactory;
7106
7107/** Static data for an LContainer */
7108declare interface TContainerNode extends TNode {
7109 /**
7110 * Index in the data[] array.
7111 *
7112 * If it's -1, this is a dynamically created container node that isn't stored in
7113 * data[] (e.g. when you inject ViewContainerRef) .
7114 */
7115 index: number;
7116 child: null;
7117 /**
7118 * Container nodes will have parents unless:
7119 *
7120 * - They are the first node of a component or embedded view
7121 * - They are dynamically created
7122 */
7123 parent: ɵangular_packages_core_core_bk | TElementContainerNode | null;
7124 tViews: TView | TView[] | null;
7125 projection: null;
7126 value: null;
7127}
7128
7129/**
7130 * Static data that corresponds to the instance-specific data array on an LView.
7131 *
7132 * Each node's static data is stored in tData at the same index that it's stored
7133 * in the data array. Any nodes that do not have static data store a null value in
7134 * tData to avoid a sparse array.
7135 *
7136 * Each pipe's definition is stored here at the same index as its pipe instance in
7137 * the data array.
7138 *
7139 * Each host property's name is stored here at the same index as its value in the
7140 * data array.
7141 *
7142 * Each property binding name is stored here at the same index as its value in
7143 * the data array. If the binding is an interpolation, the static string values
7144 * are stored parallel to the dynamic values. Example:
7145 *
7146 * id="prefix {{ v0 }} a {{ v1 }} b {{ v2 }} suffix"
7147 *
7148 * LView | TView.data
7149 *------------------------
7150 * v0 value | 'a'
7151 * v1 value | 'b'
7152 * v2 value | id � prefix � suffix
7153 *
7154 * Injector bloom filters are also stored here.
7155 */
7156declare type TData = (TNode | ɵPipeDef<any> | ɵDirectiveDef<any> | ɵComponentDef<any> | number | TStylingRange | TStylingKey | ProviderToken<any> | TI18n | I18nUpdateOpCodes | TIcu | null | string)[];
7157
7158/** Static data for an <ng-container> */
7159declare interface TElementContainerNode extends TNode {
7160 /** Index in the LView[] array. */
7161 index: number;
7162 child: ɵangular_packages_core_core_bk | TTextNode | TContainerNode | TElementContainerNode | TProjectionNode | null;
7163 parent: ɵangular_packages_core_core_bk | TElementContainerNode | null;
7164 tViews: null;
7165 projection: null;
7166}
7167
7168/**
7169 * Represents an embedded template that can be used to instantiate embedded views.
7170 * To instantiate embedded views based on a template, use the `ViewContainerRef`
7171 * method `createEmbeddedView()`.
7172 *
7173 * Access a `TemplateRef` instance by placing a directive on an `<ng-template>`
7174 * element (or directive prefixed with `*`). The `TemplateRef` for the embedded view
7175 * is injected into the constructor of the directive,
7176 * using the `TemplateRef` token.
7177 *
7178 * You can also use a `Query` to find a `TemplateRef` associated with
7179 * a component or a directive.
7180 *
7181 * @see `ViewContainerRef`
7182 * @see [Navigate the Component Tree with DI](guide/dependency-injection-navtree)
7183 *
7184 * @publicApi
7185 */
7186export declare abstract class TemplateRef<C> {
7187 /**
7188 * The anchor element in the parent view for this embedded view.
7189 *
7190 * The data-binding and injection contexts of embedded views created from this `TemplateRef`
7191 * inherit from the contexts of this location.
7192 *
7193 * Typically new embedded views are attached to the view container of this location, but in
7194 * advanced use-cases, the view can be attached to a different container while keeping the
7195 * data-binding and injection context from the original location.
7196 *
7197 */
7198 abstract get elementRef(): ElementRef;
7199 /**
7200 * Instantiates an embedded view based on this template,
7201 * and attaches it to the view container.
7202 * @param context The data-binding context of the embedded view, as declared
7203 * in the `<ng-template>` usage.
7204 * @returns The new embedded view object.
7205 */
7206 abstract createEmbeddedView(context: C): EmbeddedViewRef<C>;
7207}
7208
7209/**
7210 * The Testability service provides testing hooks that can be accessed from
7211 * the browser. Each bootstrapped Angular application on the page will have
7212 * an instance of Testability.
7213 * @publicApi
7214 */
7215export declare class Testability implements PublicTestability {
7216 private _ngZone;
7217 private _pendingCount;
7218 private _isZoneStable;
7219 private _callbacks;
7220 private taskTrackingZone;
7221 constructor(_ngZone: NgZone);
7222 private _watchAngularEvents;
7223 /**
7224 * Increases the number of pending request
7225 * @deprecated pending requests are now tracked with zones.
7226 */
7227 increasePendingRequestCount(): number;
7228 /**
7229 * Decreases the number of pending request
7230 * @deprecated pending requests are now tracked with zones
7231 */
7232 decreasePendingRequestCount(): number;
7233 /**
7234 * Whether an associated application is stable
7235 */
7236 isStable(): boolean;
7237 private _runCallbacksIfReady;
7238 private getPendingTasks;
7239 private addCallback;
7240 /**
7241 * Wait for the application to be stable with a timeout. If the timeout is reached before that
7242 * happens, the callback receives a list of the macro tasks that were pending, otherwise null.
7243 *
7244 * @param doneCb The callback to invoke when Angular is stable or the timeout expires
7245 * whichever comes first.
7246 * @param timeout Optional. The maximum time to wait for Angular to become stable. If not
7247 * specified, whenStable() will wait forever.
7248 * @param updateCb Optional. If specified, this callback will be invoked whenever the set of
7249 * pending macrotasks changes. If this callback returns true doneCb will not be invoked
7250 * and no further updates will be issued.
7251 */
7252 whenStable(doneCb: Function, timeout?: number, updateCb?: Function): void;
7253 /**
7254 * Get the number of pending requests
7255 * @deprecated pending requests are now tracked with zones
7256 */
7257 getPendingRequestCount(): number;
7258 /**
7259 * Find providers by name
7260 * @param using The root element to search from
7261 * @param provider The name of binding variable
7262 * @param exactMatch Whether using exactMatch
7263 */
7264 findProviders(using: any, provider: string, exactMatch: boolean): any[];
7265}
7266
7267/**
7268 * A global registry of {@link Testability} instances for specific elements.
7269 * @publicApi
7270 */
7271export declare class TestabilityRegistry {
7272 constructor();
7273 /**
7274 * Registers an application with a testability hook so that it can be tracked
7275 * @param token token of application, root element
7276 * @param testability Testability hook
7277 */
7278 registerApplication(token: any, testability: Testability): void;
7279 /**
7280 * Unregisters an application.
7281 * @param token token of application, root element
7282 */
7283 unregisterApplication(token: any): void;
7284 /**
7285 * Unregisters all applications
7286 */
7287 unregisterAllApplications(): void;
7288 /**
7289 * Get a testability hook associated with the application
7290 * @param elem root element
7291 */
7292 getTestability(elem: any): Testability | null;
7293 /**
7294 * Get all registered testabilities
7295 */
7296 getAllTestabilities(): Testability[];
7297 /**
7298 * Get all registered applications(root elements)
7299 */
7300 getAllRootElements(): any[];
7301 /**
7302 * Find testability of a node in the Tree
7303 * @param elem node
7304 * @param findInAncestors whether finding testability in ancestors if testability was not found in
7305 * current node
7306 */
7307 findTestabilityInTree(elem: Node, findInAncestors?: boolean): Testability | null;
7308}
7309
7310declare interface TextDef {
7311 prefix: string;
7312}
7313
7314/**
7315 * Store information for the i18n translation block.
7316 */
7317declare interface TI18n {
7318 /**
7319 * A set of OpCodes which will create the Text Nodes and ICU anchors for the translation blocks.
7320 *
7321 * NOTE: The ICU anchors are filled in with ICU Update OpCode.
7322 */
7323 create: I18nCreateOpCodes;
7324 /**
7325 * A set of OpCodes which will be executed on each change detection to determine if any changes to
7326 * DOM are required.
7327 */
7328 update: I18nUpdateOpCodes;
7329}
7330
7331declare interface TIcu {
7332 /**
7333 * Defines the ICU type of `select` or `plural`
7334 */
7335 type: IcuType;
7336 /**
7337 * Index in `LView` where the anchor node is stored. `<!-- ICU 0:0 -->`
7338 */
7339 anchorIdx: number;
7340 /**
7341 * Currently selected ICU case pointer.
7342 *
7343 * `lView[currentCaseLViewIndex]` stores the currently selected case. This is needed to know how
7344 * to clean up the current case when transitioning no the new case.
7345 *
7346 * If the value stored is:
7347 * `null`: No current case selected.
7348 * `<0`: A flag which means that the ICU just switched and that `icuUpdate` must be executed
7349 * regardless of the `mask`. (After the execution the flag is cleared)
7350 * `>=0` A currently selected case index.
7351 */
7352 currentCaseLViewIndex: number;
7353 /**
7354 * A list of case values which the current ICU will try to match.
7355 *
7356 * The last value is `other`
7357 */
7358 cases: any[];
7359 /**
7360 * A set of OpCodes to apply in order to build up the DOM render tree for the ICU
7361 */
7362 create: IcuCreateOpCodes[];
7363 /**
7364 * A set of OpCodes to apply in order to destroy the DOM render tree for the ICU.
7365 */
7366 remove: I18nRemoveOpCodes[];
7367 /**
7368 * A set of OpCodes to apply in order to update the DOM render tree for the ICU bindings.
7369 */
7370 update: I18nUpdateOpCodes[];
7371}
7372
7373/**
7374 * Binding data (flyweight) for a particular node that is shared between all templates
7375 * of a specific type.
7376 *
7377 * If a property is:
7378 * - PropertyAliases: that property's data was generated and this is it
7379 * - Null: that property's data was already generated and nothing was found.
7380 * - Undefined: that property's data has not yet been generated
7381 *
7382 * see: https://en.wikipedia.org/wiki/Flyweight_pattern for more on the Flyweight pattern
7383 */
7384declare interface TNode {
7385 /** The type of the TNode. See TNodeType. */
7386 type: TNodeType;
7387 /**
7388 * Index of the TNode in TView.data and corresponding native element in LView.
7389 *
7390 * This is necessary to get from any TNode to its corresponding native element when
7391 * traversing the node tree.
7392 *
7393 * If index is -1, this is a dynamically created container node or embedded view node.
7394 */
7395 index: number;
7396 /**
7397 * Insert before existing DOM node index.
7398 *
7399 * When DOM nodes are being inserted, normally they are being appended as they are created.
7400 * Under i18n case, the translated text nodes are created ahead of time as part of the
7401 * `ɵɵi18nStart` instruction which means that this `TNode` can't just be appended and instead
7402 * needs to be inserted using `insertBeforeIndex` semantics.
7403 *
7404 * Additionally sometimes it is necessary to insert new text nodes as a child of this `TNode`. In
7405 * such a case the value stores an array of text nodes to insert.
7406 *
7407 * Example:
7408 * ```
7409 * <div i18n>
7410 * Hello <span>World</span>!
7411 * </div>
7412 * ```
7413 * In the above example the `ɵɵi18nStart` instruction can create `Hello `, `World` and `!` text
7414 * nodes. It can also insert `Hello ` and `!` text node as a child of `<div>`, but it can't
7415 * insert `World` because the `<span>` node has not yet been created. In such a case the
7416 * `<span>` `TNode` will have an array which will direct the `<span>` to not only insert
7417 * itself in front of `!` but also to insert the `World` (created by `ɵɵi18nStart`) into
7418 * `<span>` itself.
7419 *
7420 * Pseudo code:
7421 * ```
7422 * if (insertBeforeIndex === null) {
7423 * // append as normal
7424 * } else if (Array.isArray(insertBeforeIndex)) {
7425 * // First insert current `TNode` at correct location
7426 * const currentNode = lView[this.index];
7427 * parentNode.insertBefore(currentNode, lView[this.insertBeforeIndex[0]]);
7428 * // Now append all of the children
7429 * for(let i=1; i<this.insertBeforeIndex; i++) {
7430 * currentNode.appendChild(lView[this.insertBeforeIndex[i]]);
7431 * }
7432 * } else {
7433 * parentNode.insertBefore(lView[this.index], lView[this.insertBeforeIndex])
7434 * }
7435 * ```
7436 * - null: Append as normal using `parentNode.appendChild`
7437 * - `number`: Append using
7438 * `parentNode.insertBefore(lView[this.index], lView[this.insertBeforeIndex])`
7439 *
7440 * *Initialization*
7441 *
7442 * Because `ɵɵi18nStart` executes before nodes are created, on `TView.firstCreatePass` it is not
7443 * possible for `ɵɵi18nStart` to set the `insertBeforeIndex` value as the corresponding `TNode`
7444 * has not yet been created. For this reason the `ɵɵi18nStart` creates a `TNodeType.Placeholder`
7445 * `TNode` at that location. See `TNodeType.Placeholder` for more information.
7446 */
7447 insertBeforeIndex: InsertBeforeIndex;
7448 /**
7449 * The index of the closest injector in this node's LView.
7450 *
7451 * If the index === -1, there is no injector on this node or any ancestor node in this view.
7452 *
7453 * If the index !== -1, it is the index of this node's injector OR the index of a parent
7454 * injector in the same view. We pass the parent injector index down the node tree of a view so
7455 * it's possible to find the parent injector without walking a potentially deep node tree.
7456 * Injector indices are not set across view boundaries because there could be multiple component
7457 * hosts.
7458 *
7459 * If tNode.injectorIndex === tNode.parent.injectorIndex, then the index belongs to a parent
7460 * injector.
7461 */
7462 injectorIndex: number;
7463 /**
7464 * Stores starting index of the directives.
7465 *
7466 * NOTE: The first directive is always component (if present).
7467 */
7468 directiveStart: number;
7469 /**
7470 * Stores final exclusive index of the directives.
7471 *
7472 * The area right behind the `directiveStart-directiveEnd` range is used to allocate the
7473 * `HostBindingFunction` `vars` (or null if no bindings.) Therefore `directiveEnd` is used to set
7474 * `LFrame.bindingRootIndex` before `HostBindingFunction` is executed.
7475 */
7476 directiveEnd: number;
7477 /**
7478 * Stores the last directive which had a styling instruction.
7479 *
7480 * Initial value of this is `-1` which means that no `hostBindings` styling instruction has
7481 * executed. As `hostBindings` instructions execute they set the value to the index of the
7482 * `DirectiveDef` which contained the last `hostBindings` styling instruction.
7483 *
7484 * Valid values are:
7485 * - `-1` No `hostBindings` instruction has executed.
7486 * - `directiveStart <= directiveStylingLast < directiveEnd`: Points to the `DirectiveDef` of
7487 * the last styling instruction which executed in the `hostBindings`.
7488 *
7489 * This data is needed so that styling instructions know which static styling data needs to be
7490 * collected from the `DirectiveDef.hostAttrs`. A styling instruction needs to collect all data
7491 * since last styling instruction.
7492 */
7493 directiveStylingLast: number;
7494 /**
7495 * Stores indexes of property bindings. This field is only set in the ngDevMode and holds
7496 * indexes of property bindings so TestBed can get bound property metadata for a given node.
7497 */
7498 propertyBindings: number[] | null;
7499 /**
7500 * Stores if Node isComponent, isProjected, hasContentQuery, hasClassInput and hasStyleInput
7501 * etc.
7502 */
7503 flags: TNodeFlags;
7504 /**
7505 * This number stores two values using its bits:
7506 *
7507 * - the index of the first provider on that node (first 16 bits)
7508 * - the count of view providers from the component on this node (last 16 bits)
7509 */
7510 providerIndexes: TNodeProviderIndexes;
7511 /**
7512 * The value name associated with this node.
7513 * if type:
7514 * `TNodeType.Text`: text value
7515 * `TNodeType.Element`: tag name
7516 * `TNodeType.ICUContainer`: `TIcu`
7517 */
7518 value: any;
7519 /**
7520 * Attributes associated with an element. We need to store attributes to support various
7521 * use-cases (attribute injection, content projection with selectors, directives matching).
7522 * Attributes are stored statically because reading them from the DOM would be way too slow for
7523 * content projection and queries.
7524 *
7525 * Since attrs will always be calculated first, they will never need to be marked undefined by
7526 * other instructions.
7527 *
7528 * For regular attributes a name of an attribute and its value alternate in the array.
7529 * e.g. ['role', 'checkbox']
7530 * This array can contain flags that will indicate "special attributes" (attributes with
7531 * namespaces, attributes extracted from bindings and outputs).
7532 */
7533 attrs: TAttributes | null;
7534 /**
7535 * Same as `TNode.attrs` but contains merged data across all directive host bindings.
7536 *
7537 * We need to keep `attrs` as unmerged so that it can be used for attribute selectors.
7538 * We merge attrs here so that it can be used in a performant way for initial rendering.
7539 *
7540 * The `attrs` are merged in first pass in following order:
7541 * - Component's `hostAttrs`
7542 * - Directives' `hostAttrs`
7543 * - Template `TNode.attrs` associated with the current `TNode`.
7544 */
7545 mergedAttrs: TAttributes | null;
7546 /**
7547 * A set of local names under which a given element is exported in a template and
7548 * visible to queries. An entry in this array can be created for different reasons:
7549 * - an element itself is referenced, ex.: `<div #foo>`
7550 * - a component is referenced, ex.: `<my-cmpt #foo>`
7551 * - a directive is referenced, ex.: `<my-cmpt #foo="directiveExportAs">`.
7552 *
7553 * A given element might have different local names and those names can be associated
7554 * with a directive. We store local names at even indexes while odd indexes are reserved
7555 * for directive index in a view (or `-1` if there is no associated directive).
7556 *
7557 * Some examples:
7558 * - `<div #foo>` => `["foo", -1]`
7559 * - `<my-cmpt #foo>` => `["foo", myCmptIdx]`
7560 * - `<my-cmpt #foo #bar="directiveExportAs">` => `["foo", myCmptIdx, "bar", directiveIdx]`
7561 * - `<div #foo #bar="directiveExportAs">` => `["foo", -1, "bar", directiveIdx]`
7562 */
7563 localNames: (string | number)[] | null;
7564 /** Information about input properties that need to be set once from attribute data. */
7565 initialInputs: InitialInputData | null | undefined;
7566 /**
7567 * Input data for all directives on this node. `null` means that there are no directives with
7568 * inputs on this node.
7569 */
7570 inputs: PropertyAliases | null;
7571 /**
7572 * Output data for all directives on this node. `null` means that there are no directives with
7573 * outputs on this node.
7574 */
7575 outputs: PropertyAliases | null;
7576 /**
7577 * The TView or TViews attached to this node.
7578 *
7579 * If this TNode corresponds to an LContainer with inline views, the container will
7580 * need to store separate static data for each of its view blocks (TView[]). Otherwise,
7581 * nodes in inline views with the same index as nodes in their parent views will overwrite
7582 * each other, as they are in the same template.
7583 *
7584 * Each index in this array corresponds to the static data for a certain
7585 * view. So if you had V(0) and V(1) in a container, you might have:
7586 *
7587 * [
7588 * [{tagName: 'div', attrs: ...}, null], // V(0) TView
7589 * [{tagName: 'button', attrs ...}, null] // V(1) TView
7590 *
7591 * If this TNode corresponds to an LContainer with a template (e.g. structural
7592 * directive), the template's TView will be stored here.
7593 *
7594 * If this TNode corresponds to an element, tViews will be null .
7595 */
7596 tViews: TView | TView[] | null;
7597 /**
7598 * The next sibling node. Necessary so we can propagate through the root nodes of a view
7599 * to insert them or remove them from the DOM.
7600 */
7601 next: TNode | null;
7602 /**
7603 * The next projected sibling. Since in Angular content projection works on the node-by-node
7604 * basis the act of projecting nodes might change nodes relationship at the insertion point
7605 * (target view). At the same time we need to keep initial relationship between nodes as
7606 * expressed in content view.
7607 */
7608 projectionNext: TNode | null;
7609 /**
7610 * First child of the current node.
7611 *
7612 * For component nodes, the child will always be a ContentChild (in same view).
7613 * For embedded view nodes, the child will be in their child view.
7614 */
7615 child: TNode | null;
7616 /**
7617 * Parent node (in the same view only).
7618 *
7619 * We need a reference to a node's parent so we can append the node to its parent's native
7620 * element at the appropriate time.
7621 *
7622 * If the parent would be in a different view (e.g. component host), this property will be null.
7623 * It's important that we don't try to cross component boundaries when retrieving the parent
7624 * because the parent will change (e.g. index, attrs) depending on where the component was
7625 * used (and thus shouldn't be stored on TNode). In these cases, we retrieve the parent through
7626 * LView.node instead (which will be instance-specific).
7627 *
7628 * If this is an inline view node (V), the parent will be its container.
7629 */
7630 parent: ɵangular_packages_core_core_bk | TContainerNode | null;
7631 /**
7632 * List of projected TNodes for a given component host element OR index into the said nodes.
7633 *
7634 * For easier discussion assume this example:
7635 * `<parent>`'s view definition:
7636 * ```
7637 * <child id="c1">content1</child>
7638 * <child id="c2"><span>content2</span></child>
7639 * ```
7640 * `<child>`'s view definition:
7641 * ```
7642 * <ng-content id="cont1"></ng-content>
7643 * ```
7644 *
7645 * If `Array.isArray(projection)` then `TNode` is a host element:
7646 * - `projection` stores the content nodes which are to be projected.
7647 * - The nodes represent categories defined by the selector: For example:
7648 * `<ng-content/><ng-content select="abc"/>` would represent the heads for `<ng-content/>`
7649 * and `<ng-content select="abc"/>` respectively.
7650 * - The nodes we store in `projection` are heads only, we used `.next` to get their
7651 * siblings.
7652 * - The nodes `.next` is sorted/rewritten as part of the projection setup.
7653 * - `projection` size is equal to the number of projections `<ng-content>`. The size of
7654 * `c1` will be `1` because `<child>` has only one `<ng-content>`.
7655 * - we store `projection` with the host (`c1`, `c2`) rather than the `<ng-content>` (`cont1`)
7656 * because the same component (`<child>`) can be used in multiple locations (`c1`, `c2`) and
7657 * as a result have different set of nodes to project.
7658 * - without `projection` it would be difficult to efficiently traverse nodes to be projected.
7659 *
7660 * If `typeof projection == 'number'` then `TNode` is a `<ng-content>` element:
7661 * - `projection` is an index of the host's `projection`Nodes.
7662 * - This would return the first head node to project:
7663 * `getHost(currentTNode).projection[currentTNode.projection]`.
7664 * - When projecting nodes the parent node retrieved may be a `<ng-content>` node, in which case
7665 * the process is recursive in nature.
7666 *
7667 * If `projection` is of type `RNode[][]` than we have a collection of native nodes passed as
7668 * projectable nodes during dynamic component creation.
7669 */
7670 projection: (TNode | RNode[])[] | number | null;
7671 /**
7672 * A collection of all `style` static values for an element (including from host).
7673 *
7674 * This field will be populated if and when:
7675 *
7676 * - There are one or more initial `style`s on an element (e.g. `<div style="width:200px;">`)
7677 * - There are one or more initial `style`s on a directive/component host
7678 * (e.g. `@Directive({host: {style: "width:200px;" } }`)
7679 */
7680 styles: string | null;
7681 /**
7682 * A collection of all `style` static values for an element excluding host sources.
7683 *
7684 * Populated when there are one or more initial `style`s on an element
7685 * (e.g. `<div style="width:200px;">`)
7686 * Must be stored separately from `tNode.styles` to facilitate setting directive
7687 * inputs that shadow the `style` property. If we used `tNode.styles` as is for shadowed inputs,
7688 * we would feed host styles back into directives as "inputs". If we used `tNode.attrs`, we
7689 * would have to concatenate the attributes on every template pass. Instead, we process once on
7690 * first create pass and store here.
7691 */
7692 stylesWithoutHost: string | null;
7693 /**
7694 * A `KeyValueArray` version of residual `styles`.
7695 *
7696 * When there are styling instructions than each instruction stores the static styling
7697 * which is of lower priority than itself. This means that there may be a higher priority
7698 * styling than the instruction.
7699 *
7700 * Imagine:
7701 * ```
7702 * <div style="color: highest;" my-dir>
7703 *
7704 * @Directive({
7705 * host: {
7706 * style: 'color: lowest; ',
7707 * '[styles.color]': 'exp' // ɵɵstyleProp('color', ctx.exp);
7708 * }
7709 * })
7710 * ```
7711 *
7712 * In the above case:
7713 * - `color: lowest` is stored with `ɵɵstyleProp('color', ctx.exp);` instruction
7714 * - `color: highest` is the residual and is stored here.
7715 *
7716 * - `undefined': not initialized.
7717 * - `null`: initialized but `styles` is `null`
7718 * - `KeyValueArray`: parsed version of `styles`.
7719 */
7720 residualStyles: KeyValueArray<any> | undefined | null;
7721 /**
7722 * A collection of all class static values for an element (including from host).
7723 *
7724 * This field will be populated if and when:
7725 *
7726 * - There are one or more initial classes on an element (e.g. `<div class="one two three">`)
7727 * - There are one or more initial classes on an directive/component host
7728 * (e.g. `@Directive({host: {class: "SOME_CLASS" } }`)
7729 */
7730 classes: string | null;
7731 /**
7732 * A collection of all class static values for an element excluding host sources.
7733 *
7734 * Populated when there are one or more initial classes on an element
7735 * (e.g. `<div class="SOME_CLASS">`)
7736 * Must be stored separately from `tNode.classes` to facilitate setting directive
7737 * inputs that shadow the `class` property. If we used `tNode.classes` as is for shadowed
7738 * inputs, we would feed host classes back into directives as "inputs". If we used
7739 * `tNode.attrs`, we would have to concatenate the attributes on every template pass. Instead,
7740 * we process once on first create pass and store here.
7741 */
7742 classesWithoutHost: string | null;
7743 /**
7744 * A `KeyValueArray` version of residual `classes`.
7745 *
7746 * Same as `TNode.residualStyles` but for classes.
7747 *
7748 * - `undefined': not initialized.
7749 * - `null`: initialized but `classes` is `null`
7750 * - `KeyValueArray`: parsed version of `classes`.
7751 */
7752 residualClasses: KeyValueArray<any> | undefined | null;
7753 /**
7754 * Stores the head/tail index of the class bindings.
7755 *
7756 * - If no bindings, the head and tail will both be 0.
7757 * - If there are template bindings, stores the head/tail of the class bindings in the template.
7758 * - If no template bindings but there are host bindings, the head value will point to the last
7759 * host binding for "class" (not the head of the linked list), tail will be 0.
7760 *
7761 * See: `style_binding_list.ts` for details.
7762 *
7763 * This is used by `insertTStylingBinding` to know where the next styling binding should be
7764 * inserted so that they can be sorted in priority order.
7765 */
7766 classBindings: TStylingRange;
7767 /**
7768 * Stores the head/tail index of the class bindings.
7769 *
7770 * - If no bindings, the head and tail will both be 0.
7771 * - If there are template bindings, stores the head/tail of the style bindings in the template.
7772 * - If no template bindings but there are host bindings, the head value will point to the last
7773 * host binding for "style" (not the head of the linked list), tail will be 0.
7774 *
7775 * See: `style_binding_list.ts` for details.
7776 *
7777 * This is used by `insertTStylingBinding` to know where the next styling binding should be
7778 * inserted so that they can be sorted in priority order.
7779 */
7780 styleBindings: TStylingRange;
7781}
7782
7783/**
7784 * Corresponds to the TNode.flags property.
7785 */
7786declare const enum TNodeFlags {
7787 /** Bit #1 - This bit is set if the node is a host for any directive (including a component) */
7788 isDirectiveHost = 1,
7789 /**
7790 * Bit #2 - This bit is set if the node is a host for a component.
7791 *
7792 * Setting this bit implies that the `isDirectiveHost` bit is set as well.
7793 * */
7794 isComponentHost = 2,
7795 /** Bit #3 - This bit is set if the node has been projected */
7796 isProjected = 4,
7797 /** Bit #4 - This bit is set if any directive on this node has content queries */
7798 hasContentQuery = 8,
7799 /** Bit #5 - This bit is set if the node has any "class" inputs */
7800 hasClassInput = 16,
7801 /** Bit #6 - This bit is set if the node has any "style" inputs */
7802 hasStyleInput = 32,
7803 /** Bit #7 This bit is set if the node has been detached by i18n */
7804 isDetached = 64,
7805 /**
7806 * Bit #8 - This bit is set if the node has directives with host bindings.
7807 *
7808 * This flags allows us to guard host-binding logic and invoke it only on nodes
7809 * that actually have directives with host bindings.
7810 */
7811 hasHostBindings = 128
7812}
7813
7814/**
7815 * Corresponds to the TNode.providerIndexes property.
7816 */
7817declare const enum TNodeProviderIndexes {
7818 /** The index of the first provider on this node is encoded on the least significant bits. */
7819 ProvidersStartIndexMask = 1048575,
7820 /**
7821 * The count of view providers from the component on this node is
7822 * encoded on the 20 most significant bits.
7823 */
7824 CptViewProvidersCountShift = 20,
7825 CptViewProvidersCountShifter = 1048576
7826}
7827
7828/**
7829 * TNodeType corresponds to the {@link TNode} `type` property.
7830 *
7831 * NOTE: type IDs are such that we use each bit to denote a type. This is done so that we can easily
7832 * check if the `TNode` is of more than one type.
7833 *
7834 * `if (tNode.type === TNodeType.Text || tNode.type === TNode.Element)`
7835 * can be written as:
7836 * `if (tNode.type & (TNodeType.Text | TNodeType.Element))`
7837 *
7838 * However any given `TNode` can only be of one type.
7839 */
7840declare const enum TNodeType {
7841 /**
7842 * The TNode contains information about a DOM element aka {@link RText}.
7843 */
7844 Text = 1,
7845 /**
7846 * The TNode contains information about a DOM element aka {@link RElement}.
7847 */
7848 Element = 2,
7849 /**
7850 * The TNode contains information about an {@link LContainer} for embedded views.
7851 */
7852 Container = 4,
7853 /**
7854 * The TNode contains information about an `<ng-container>` element {@link RNode}.
7855 */
7856 ElementContainer = 8,
7857 /**
7858 * The TNode contains information about an `<ng-content>` projection
7859 */
7860 Projection = 16,
7861 /**
7862 * The TNode contains information about an ICU comment used in `i18n`.
7863 */
7864 Icu = 32,
7865 /**
7866 * Special node type representing a placeholder for future `TNode` at this location.
7867 *
7868 * I18n translation blocks are created before the element nodes which they contain. (I18n blocks
7869 * can span over many elements.) Because i18n `TNode`s (representing text) are created first they
7870 * often may need to point to element `TNode`s which are not yet created. In such a case we create
7871 * a `Placeholder` `TNode`. This allows the i18n to structurally link the `TNode`s together
7872 * without knowing any information about the future nodes which will be at that location.
7873 *
7874 * On `firstCreatePass` When element instruction executes it will try to create a `TNode` at that
7875 * location. Seeing a `Placeholder` `TNode` already there tells the system that it should reuse
7876 * existing `TNode` (rather than create a new one) and just update the missing information.
7877 */
7878 Placeholder = 64,
7879 AnyRNode = 3,
7880 AnyContainer = 12
7881}
7882
7883/**
7884 * Type representing a set of TNodes that can have local refs (`#foo`) placed on them.
7885 */
7886declare type TNodeWithLocalRefs = TContainerNode | ɵangular_packages_core_core_bk | TElementContainerNode;
7887
7888/** Static data for an LProjectionNode */
7889declare interface TProjectionNode extends TNode {
7890 /** Index in the data[] array */
7891 child: null;
7892 /**
7893 * Projection nodes will have parents unless they are the first node of a component
7894 * or embedded view (which means their parent is in a different view and must be
7895 * retrieved using LView.node).
7896 */
7897 parent: ɵangular_packages_core_core_bk | TElementContainerNode | null;
7898 tViews: null;
7899 /** Index of the projection node. (See TNode.projection for more info.) */
7900 projection: number;
7901 value: null;
7902}
7903
7904/**
7905 * TQueries represent a collection of individual TQuery objects tracked in a given view. Most of the
7906 * methods on this interface are simple proxy methods to the corresponding functionality on TQuery.
7907 */
7908declare interface TQueries {
7909 /**
7910 * Adds a new TQuery to a collection of queries tracked in a given view.
7911 * @param tQuery
7912 */
7913 track(tQuery: TQuery): void;
7914 /**
7915 * Returns a TQuery instance for at the given index in the queries array.
7916 * @param index
7917 */
7918 getByIndex(index: number): TQuery;
7919 /**
7920 * Returns the number of queries tracked in a given view.
7921 */
7922 length: number;
7923 /**
7924 * A proxy method that iterates over all the TQueries in a given TView and calls the corresponding
7925 * `elementStart` on each and every TQuery.
7926 * @param tView
7927 * @param tNode
7928 */
7929 elementStart(tView: TView, tNode: TNode): void;
7930 /**
7931 * A proxy method that iterates over all the TQueries in a given TView and calls the corresponding
7932 * `elementEnd` on each and every TQuery.
7933 * @param tNode
7934 */
7935 elementEnd(tNode: TNode): void;
7936 /**
7937 * A proxy method that iterates over all the TQueries in a given TView and calls the corresponding
7938 * `template` on each and every TQuery.
7939 * @param tView
7940 * @param tNode
7941 */
7942 template(tView: TView, tNode: TNode): void;
7943 /**
7944 * A proxy method that iterates over all the TQueries in a given TView and calls the corresponding
7945 * `embeddedTView` on each and every TQuery.
7946 * @param tNode
7947 */
7948 embeddedTView(tNode: TNode): TQueries | null;
7949}
7950
7951/**
7952 * TQuery objects represent all the query-related data that remain the same from one view instance
7953 * to another and can be determined on the very first template pass. Most notably TQuery holds all
7954 * the matches for a given view.
7955 */
7956declare interface TQuery {
7957 /**
7958 * Query metadata extracted from query annotations.
7959 */
7960 metadata: TQueryMetadata;
7961 /**
7962 * Index of a query in a declaration view in case of queries propagated to en embedded view, -1
7963 * for queries declared in a given view. We are storing this index so we can find a parent query
7964 * to clone for an embedded view (when an embedded view is created).
7965 */
7966 indexInDeclarationView: number;
7967 /**
7968 * Matches collected on the first template pass. Each match is a pair of:
7969 * - TNode index;
7970 * - match index;
7971 *
7972 * A TNode index can be either:
7973 * - a positive number (the most common case) to indicate a matching TNode;
7974 * - a negative number to indicate that a given query is crossing a <ng-template> element and
7975 * results from views created based on TemplateRef should be inserted at this place.
7976 *
7977 * A match index is a number used to find an actual value (for a given node) when query results
7978 * are materialized. This index can have one of the following values:
7979 * - -2 - indicates that we need to read a special token (TemplateRef, ViewContainerRef etc.);
7980 * - -1 - indicates that we need to read a default value based on the node type (TemplateRef for
7981 * ng-template and ElementRef for other elements);
7982 * - a positive number - index of an injectable to be read from the element injector.
7983 */
7984 matches: number[] | null;
7985 /**
7986 * A flag indicating if a given query crosses an <ng-template> element. This flag exists for
7987 * performance reasons: we can notice that queries not crossing any <ng-template> elements will
7988 * have matches from a given view only (and adapt processing accordingly).
7989 */
7990 crossesNgTemplate: boolean;
7991 /**
7992 * A method call when a given query is crossing an element (or element container). This is where a
7993 * given TNode is matched against a query predicate.
7994 * @param tView
7995 * @param tNode
7996 */
7997 elementStart(tView: TView, tNode: TNode): void;
7998 /**
7999 * A method called when processing the elementEnd instruction - this is mostly useful to determine
8000 * if a given content query should match any nodes past this point.
8001 * @param tNode
8002 */
8003 elementEnd(tNode: TNode): void;
8004 /**
8005 * A method called when processing the template instruction. This is where a
8006 * given TContainerNode is matched against a query predicate.
8007 * @param tView
8008 * @param tNode
8009 */
8010 template(tView: TView, tNode: TNode): void;
8011 /**
8012 * A query-related method called when an embedded TView is created based on the content of a
8013 * <ng-template> element. We call this method to determine if a given query should be propagated
8014 * to the embedded view and if so - return a cloned TQuery for this embedded view.
8015 * @param tNode
8016 * @param childQueryIndex
8017 */
8018 embeddedTView(tNode: TNode, childQueryIndex: number): TQuery | null;
8019}
8020
8021/**
8022 * An object representing query metadata extracted from query annotations.
8023 */
8024declare interface TQueryMetadata {
8025 predicate: ProviderToken<unknown> | string[];
8026 read: any;
8027 flags: QueryFlags;
8028}
8029
8030/**
8031 * A function optionally passed into the `NgForOf` directive to customize how `NgForOf` uniquely
8032 * identifies items in an iterable.
8033 *
8034 * `NgForOf` needs to uniquely identify items in the iterable to correctly perform DOM updates
8035 * when items in the iterable are reordered, new items are added, or existing items are removed.
8036 *
8037 *
8038 * In all of these scenarios it is usually desirable to only update the DOM elements associated
8039 * with the items affected by the change. This behavior is important to:
8040 *
8041 * - preserve any DOM-specific UI state (like cursor position, focus, text selection) when the
8042 * iterable is modified
8043 * - enable animation of item addition, removal, and iterable reordering
8044 * - preserve the value of the `<select>` element when nested `<option>` elements are dynamically
8045 * populated using `NgForOf` and the bound iterable is updated
8046 *
8047 * A common use for custom `trackBy` functions is when the model that `NgForOf` iterates over
8048 * contains a property with a unique identifier. For example, given a model:
8049 *
8050 * ```ts
8051 * class User {
8052 * id: number;
8053 * name: string;
8054 * ...
8055 * }
8056 * ```
8057 * a custom `trackBy` function could look like the following:
8058 * ```ts
8059 * function userTrackBy(index, user) {
8060 * return user.id;
8061 * }
8062 * ```
8063 *
8064 * A custom `trackBy` function must have several properties:
8065 *
8066 * - be [idempotent](https://en.wikipedia.org/wiki/Idempotence) (be without side effects, and always
8067 * return the same value for a given input)
8068 * - return unique value for all unique inputs
8069 * - be fast
8070 *
8071 * @see [`NgForOf#ngForTrackBy`](api/common/NgForOf#ngForTrackBy)
8072 * @publicApi
8073 */
8074export declare interface TrackByFunction<T> {
8075 /**
8076 * @param index The index of the item within the iterable.
8077 * @param item The item in the iterable.
8078 */
8079 <U extends T>(index: number, item: T & U): any;
8080}
8081
8082/**
8083 * Use this token at bootstrap to provide the content of your translation file (`xtb`,
8084 * `xlf` or `xlf2`) when you want to translate your application in another language.
8085 *
8086 * See the [i18n guide](guide/i18n-common-merge) for more information.
8087 *
8088 * @usageNotes
8089 * ### Example
8090 *
8091 * ```typescript
8092 * import { TRANSLATIONS } from '@angular/core';
8093 * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
8094 * import { AppModule } from './app/app.module';
8095 *
8096 * // content of your translation file
8097 * const translations = '....';
8098 *
8099 * platformBrowserDynamic().bootstrapModule(AppModule, {
8100 * providers: [{provide: TRANSLATIONS, useValue: translations }]
8101 * });
8102 * ```
8103 *
8104 * @publicApi
8105 */
8106export declare const TRANSLATIONS: InjectionToken<string>;
8107
8108/**
8109 * Provide this token at bootstrap to set the format of your {@link TRANSLATIONS}: `xtb`,
8110 * `xlf` or `xlf2`.
8111 *
8112 * See the [i18n guide](guide/i18n-common-merge) for more information.
8113 *
8114 * @usageNotes
8115 * ### Example
8116 *
8117 * ```typescript
8118 * import { TRANSLATIONS_FORMAT } from '@angular/core';
8119 * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
8120 * import { AppModule } from './app/app.module';
8121 *
8122 * platformBrowserDynamic().bootstrapModule(AppModule, {
8123 * providers: [{provide: TRANSLATIONS_FORMAT, useValue: 'xlf' }]
8124 * });
8125 * ```
8126 *
8127 * @publicApi
8128 */
8129export declare const TRANSLATIONS_FORMAT: InjectionToken<string>;
8130
8131declare const TRANSPLANTED_VIEWS_TO_REFRESH = 5;
8132
8133
8134/**
8135 * @fileoverview
8136 * While Angular only uses Trusted Types internally for the time being,
8137 * references to Trusted Types could leak into our core.d.ts, which would force
8138 * anyone compiling against @angular/core to provide the @types/trusted-types
8139 * package in their compilation unit.
8140 *
8141 * Until https://github.com/microsoft/TypeScript/issues/30024 is resolved, we
8142 * will keep Angular's public API surface free of references to Trusted Types.
8143 * For internal and semi-private APIs that need to reference Trusted Types, the
8144 * minimal type definitions for the Trusted Types API provided by this module
8145 * should be used instead. They are marked as "declare" to prevent them from
8146 * being renamed by compiler optimization.
8147 *
8148 * Adapted from
8149 * https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/trusted-types/index.d.ts
8150 * but restricted to the API surface used within Angular.
8151 */
8152declare interface TrustedHTML {
8153 __brand__: 'TrustedHTML';
8154}
8155
8156declare interface TrustedScript {
8157 __brand__: 'TrustedScript';
8158}
8159
8160declare interface TrustedScriptURL {
8161 __brand__: 'TrustedScriptURL';
8162}
8163
8164/**
8165 * Value stored in the `TData` which is needed to re-concatenate the styling.
8166 *
8167 * See: `TStylingKeyPrimitive` and `TStylingStatic`
8168 */
8169declare type TStylingKey = TStylingKeyPrimitive | TStylingStatic;
8170
8171/**
8172 * The primitive portion (`TStylingStatic` removed) of the value stored in the `TData` which is
8173 * needed to re-concatenate the styling.
8174 *
8175 * - `string`: Stores the property name. Used with `ɵɵstyleProp`/`ɵɵclassProp` instruction.
8176 * - `null`: Represents map, so there is no name. Used with `ɵɵstyleMap`/`ɵɵclassMap`.
8177 * - `false`: Represents an ignore case. This happens when `ɵɵstyleProp`/`ɵɵclassProp` instruction
8178 * is combined with directive which shadows its input `@Input('class')`. That way the binding
8179 * should not participate in the styling resolution.
8180 */
8181declare type TStylingKeyPrimitive = string | null | false;
8182
8183/**
8184 * This is a branded number which contains previous and next index.
8185 *
8186 * When we come across styling instructions we need to store the `TStylingKey` in the correct
8187 * order so that we can re-concatenate the styling value in the desired priority.
8188 *
8189 * The insertion can happen either at the:
8190 * - end of template as in the case of coming across additional styling instruction in the template
8191 * - in front of the template in the case of coming across additional instruction in the
8192 * `hostBindings`.
8193 *
8194 * We use `TStylingRange` to store the previous and next index into the `TData` where the template
8195 * bindings can be found.
8196 *
8197 * - bit 0 is used to mark that the previous index has a duplicate for current value.
8198 * - bit 1 is used to mark that the next index has a duplicate for the current value.
8199 * - bits 2-16 are used to encode the next/tail of the template.
8200 * - bits 17-32 are used to encode the previous/head of template.
8201 *
8202 * NODE: *duplicate* false implies that it is statically known that this binding will not collide
8203 * with other bindings and therefore there is no need to check other bindings. For example the
8204 * bindings in `<div [style.color]="exp" [style.width]="exp">` will never collide and will have
8205 * their bits set accordingly. Previous duplicate means that we may need to check previous if the
8206 * current binding is `null`. Next duplicate means that we may need to check next bindings if the
8207 * current binding is not `null`.
8208 *
8209 * NOTE: `0` has special significance and represents `null` as in no additional pointer.
8210 */
8211declare interface TStylingRange {
8212 __brand__: 'TStylingRange';
8213}
8214
8215/**
8216 * Store the static values for the styling binding.
8217 *
8218 * The `TStylingStatic` is just `KeyValueArray` where key `""` (stored at location 0) contains the
8219 * `TStylingKey` (stored at location 1). In other words this wraps the `TStylingKey` such that the
8220 * `""` contains the wrapped value.
8221 *
8222 * When instructions are resolving styling they may need to look forward or backwards in the linked
8223 * list to resolve the value. For this reason we have to make sure that he linked list also contains
8224 * the static values. However the list only has space for one item per styling instruction. For this
8225 * reason we store the static values here as part of the `TStylingKey`. This means that the
8226 * resolution function when looking for a value needs to first look at the binding value, and than
8227 * at `TStylingKey` (if it exists).
8228 *
8229 * Imagine we have:
8230 *
8231 * ```
8232 * <div class="TEMPLATE" my-dir>
8233 *
8234 * @Directive({
8235 * host: {
8236 * class: 'DIR',
8237 * '[class.dynamic]': 'exp' // ɵɵclassProp('dynamic', ctx.exp);
8238 * }
8239 * })
8240 * ```
8241 *
8242 * In the above case the linked list will contain one item:
8243 *
8244 * ```
8245 * // assume binding location: 10 for `ɵɵclassProp('dynamic', ctx.exp);`
8246 * tData[10] = <TStylingStatic>[
8247 * '': 'dynamic', // This is the wrapped value of `TStylingKey`
8248 * 'DIR': true, // This is the default static value of directive binding.
8249 * ];
8250 * tData[10 + 1] = 0; // We don't have prev/next.
8251 *
8252 * lView[10] = undefined; // assume `ctx.exp` is `undefined`
8253 * lView[10 + 1] = undefined; // Just normalized `lView[10]`
8254 * ```
8255 *
8256 * So when the function is resolving styling value, it first needs to look into the linked list
8257 * (there is none) and than into the static `TStylingStatic` too see if there is a default value for
8258 * `dynamic` (there is not). Therefore it is safe to remove it.
8259 *
8260 * If setting `true` case:
8261 * ```
8262 * lView[10] = true; // assume `ctx.exp` is `true`
8263 * lView[10 + 1] = true; // Just normalized `lView[10]`
8264 * ```
8265 * So when the function is resolving styling value, it first needs to look into the linked list
8266 * (there is none) and than into `TNode.residualClass` (TNode.residualStyle) which contains
8267 * ```
8268 * tNode.residualClass = [
8269 * 'TEMPLATE': true,
8270 * ];
8271 * ```
8272 *
8273 * This means that it is safe to add class.
8274 */
8275declare interface TStylingStatic extends KeyValueArray<any> {
8276}
8277
8278/** Static data for a text node */
8279declare interface TTextNode extends TNode {
8280 /** Index in the data[] array */
8281 index: number;
8282 child: null;
8283 /**
8284 * Text nodes will have parents unless they are the first node of a component or
8285 * embedded view (which means their parent is in a different view and must be
8286 * retrieved using LView.node).
8287 */
8288 parent: ɵangular_packages_core_core_bk | TElementContainerNode | null;
8289 tViews: null;
8290 projection: null;
8291}
8292
8293declare const TVIEW = 1;
8294
8295/**
8296 * The static data for an LView (shared between all templates of a
8297 * given type).
8298 *
8299 * Stored on the `ComponentDef.tView`.
8300 */
8301declare interface TView {
8302 /**
8303 * Type of `TView` (`Root`|`Component`|`Embedded`).
8304 */
8305 type: TViewType;
8306 /**
8307 * This is a blueprint used to generate LView instances for this TView. Copying this
8308 * blueprint is faster than creating a new LView from scratch.
8309 */
8310 blueprint: ɵangular_packages_core_core_ca;
8311 /**
8312 * The template function used to refresh the view of dynamically created views
8313 * and components. Will be null for inline views.
8314 */
8315 template: ComponentTemplate<{}> | null;
8316 /**
8317 * A function containing query-related instructions.
8318 */
8319 viewQuery: ViewQueriesFunction<{}> | null;
8320 /**
8321 * A `TNode` representing the declaration location of this `TView` (not part of this TView).
8322 */
8323 declTNode: TNode | null;
8324 /** Whether or not this template has been processed in creation mode. */
8325 firstCreatePass: boolean;
8326 /**
8327 * Whether or not this template has been processed in update mode (e.g. change detected)
8328 *
8329 * `firstUpdatePass` is used by styling to set up `TData` to contain metadata about the styling
8330 * instructions. (Mainly to build up a linked list of styling priority order.)
8331 *
8332 * Typically this function gets cleared after first execution. If exception is thrown then this
8333 * flag can remain turned un until there is first successful (no exception) pass. This means that
8334 * individual styling instructions keep track of if they have already been added to the linked
8335 * list to prevent double adding.
8336 */
8337 firstUpdatePass: boolean;
8338 /** Static data equivalent of LView.data[]. Contains TNodes, PipeDefInternal or TI18n. */
8339 data: TData;
8340 /**
8341 * The binding start index is the index at which the data array
8342 * starts to store bindings only. Saving this value ensures that we
8343 * will begin reading bindings at the correct point in the array when
8344 * we are in update mode.
8345 *
8346 * -1 means that it has not been initialized.
8347 */
8348 bindingStartIndex: number;
8349 /**
8350 * The index where the "expando" section of `LView` begins. The expando
8351 * section contains injectors, directive instances, and host binding values.
8352 * Unlike the "decls" and "vars" sections of `LView`, the length of this
8353 * section cannot be calculated at compile-time because directives are matched
8354 * at runtime to preserve locality.
8355 *
8356 * We store this start index so we know where to start checking host bindings
8357 * in `setHostBindings`.
8358 */
8359 expandoStartIndex: number;
8360 /**
8361 * Whether or not there are any static view queries tracked on this view.
8362 *
8363 * We store this so we know whether or not we should do a view query
8364 * refresh after creation mode to collect static query results.
8365 */
8366 staticViewQueries: boolean;
8367 /**
8368 * Whether or not there are any static content queries tracked on this view.
8369 *
8370 * We store this so we know whether or not we should do a content query
8371 * refresh after creation mode to collect static query results.
8372 */
8373 staticContentQueries: boolean;
8374 /**
8375 * A reference to the first child node located in the view.
8376 */
8377 firstChild: TNode | null;
8378 /**
8379 * Stores the OpCodes to be replayed during change-detection to process the `HostBindings`
8380 *
8381 * See `HostBindingOpCodes` for encoding details.
8382 */
8383 hostBindingOpCodes: HostBindingOpCodes | null;
8384 /**
8385 * Full registry of directives and components that may be found in this view.
8386 *
8387 * It's necessary to keep a copy of the full def list on the TView so it's possible
8388 * to render template functions without a host component.
8389 */
8390 directiveRegistry: DirectiveDefList | null;
8391 /**
8392 * Full registry of pipes that may be found in this view.
8393 *
8394 * The property is either an array of `PipeDefs`s or a function which returns the array of
8395 * `PipeDefs`s. The function is necessary to be able to support forward declarations.
8396 *
8397 * It's necessary to keep a copy of the full def list on the TView so it's possible
8398 * to render template functions without a host component.
8399 */
8400 pipeRegistry: PipeDefList | null;
8401 /**
8402 * Array of ngOnInit, ngOnChanges and ngDoCheck hooks that should be executed for this view in
8403 * creation mode.
8404 *
8405 * This array has a flat structure and contains TNode indices, directive indices (where an
8406 * instance can be found in `LView`) and hook functions. TNode index is followed by the directive
8407 * index and a hook function. If there are multiple hooks for a given TNode, the TNode index is
8408 * not repeated and the next lifecycle hook information is stored right after the previous hook
8409 * function. This is done so that at runtime the system can efficiently iterate over all of the
8410 * functions to invoke without having to make any decisions/lookups.
8411 */
8412 preOrderHooks: HookData | null;
8413 /**
8414 * Array of ngOnChanges and ngDoCheck hooks that should be executed for this view in update mode.
8415 *
8416 * This array has the same structure as the `preOrderHooks` one.
8417 */
8418 preOrderCheckHooks: HookData | null;
8419 /**
8420 * Array of ngAfterContentInit and ngAfterContentChecked hooks that should be executed
8421 * for this view in creation mode.
8422 *
8423 * Even indices: Directive index
8424 * Odd indices: Hook function
8425 */
8426 contentHooks: HookData | null;
8427 /**
8428 * Array of ngAfterContentChecked hooks that should be executed for this view in update
8429 * mode.
8430 *
8431 * Even indices: Directive index
8432 * Odd indices: Hook function
8433 */
8434 contentCheckHooks: HookData | null;
8435 /**
8436 * Array of ngAfterViewInit and ngAfterViewChecked hooks that should be executed for
8437 * this view in creation mode.
8438 *
8439 * Even indices: Directive index
8440 * Odd indices: Hook function
8441 */
8442 viewHooks: HookData | null;
8443 /**
8444 * Array of ngAfterViewChecked hooks that should be executed for this view in
8445 * update mode.
8446 *
8447 * Even indices: Directive index
8448 * Odd indices: Hook function
8449 */
8450 viewCheckHooks: HookData | null;
8451 /**
8452 * Array of ngOnDestroy hooks that should be executed when this view is destroyed.
8453 *
8454 * Even indices: Directive index
8455 * Odd indices: Hook function
8456 */
8457 destroyHooks: DestroyHookData | null;
8458 /**
8459 * When a view is destroyed, listeners need to be released and outputs need to be
8460 * unsubscribed. This cleanup array stores both listener data (in chunks of 4)
8461 * and output data (in chunks of 2) for a particular view. Combining the arrays
8462 * saves on memory (70 bytes per array) and on a few bytes of code size (for two
8463 * separate for loops).
8464 *
8465 * If it's a native DOM listener or output subscription being stored:
8466 * 1st index is: event name `name = tView.cleanup[i+0]`
8467 * 2nd index is: index of native element or a function that retrieves global target (window,
8468 * document or body) reference based on the native element:
8469 * `typeof idxOrTargetGetter === 'function'`: global target getter function
8470 * `typeof idxOrTargetGetter === 'number'`: index of native element
8471 *
8472 * 3rd index is: index of listener function `listener = lView[CLEANUP][tView.cleanup[i+2]]`
8473 * 4th index is: `useCaptureOrIndx = tView.cleanup[i+3]`
8474 * `typeof useCaptureOrIndx == 'boolean' : useCapture boolean
8475 * `typeof useCaptureOrIndx == 'number':
8476 * `useCaptureOrIndx >= 0` `removeListener = LView[CLEANUP][useCaptureOrIndx]`
8477 * `useCaptureOrIndx < 0` `subscription = LView[CLEANUP][-useCaptureOrIndx]`
8478 *
8479 * If it's an output subscription or query list destroy hook:
8480 * 1st index is: output unsubscribe function / query list destroy function
8481 * 2nd index is: index of function context in LView.cleanupInstances[]
8482 * `tView.cleanup[i+0].call(lView[CLEANUP][tView.cleanup[i+1]])`
8483 */
8484 cleanup: any[] | null;
8485 /**
8486 * A list of element indices for child components that will need to be
8487 * refreshed when the current view has finished its check. These indices have
8488 * already been adjusted for the HEADER_OFFSET.
8489 *
8490 */
8491 components: number[] | null;
8492 /**
8493 * A collection of queries tracked in a given view.
8494 */
8495 queries: TQueries | null;
8496 /**
8497 * An array of indices pointing to directives with content queries alongside with the
8498 * corresponding query index. Each entry in this array is a tuple of:
8499 * - index of the first content query index declared by a given directive;
8500 * - index of a directive.
8501 *
8502 * We are storing those indexes so we can refresh content queries as part of a view refresh
8503 * process.
8504 */
8505 contentQueries: number[] | null;
8506 /**
8507 * Set of schemas that declare elements to be allowed inside the view.
8508 */
8509 schemas: SchemaMetadata[] | null;
8510 /**
8511 * Array of constants for the view. Includes attribute arrays, local definition arrays etc.
8512 * Used for directive matching, attribute bindings, local definitions and more.
8513 */
8514 consts: TConstants | null;
8515 /**
8516 * Indicates that there was an error before we managed to complete the first create pass of the
8517 * view. This means that the view is likely corrupted and we should try to recover it.
8518 */
8519 incompleteFirstPass: boolean;
8520}
8521
8522/**
8523 * Explicitly marks `TView` as a specific type in `ngDevMode`
8524 *
8525 * It is useful to know conceptually what time of `TView` we are dealing with when
8526 * debugging an application (even if the runtime does not need it.) For this reason
8527 * we store this information in the `ngDevMode` `TView` and than use it for
8528 * better debugging experience.
8529 */
8530declare const enum TViewType {
8531 /**
8532 * Root `TView` is the used to bootstrap components into. It is used in conjunction with
8533 * `LView` which takes an existing DOM node not owned by Angular and wraps it in `TView`/`LView`
8534 * so that other components can be loaded into it.
8535 */
8536 Root = 0,
8537 /**
8538 * `TView` associated with a Component. This would be the `TView` directly associated with the
8539 * component view (as opposed an `Embedded` `TView` which would be a child of `Component` `TView`)
8540 */
8541 Component = 1,
8542 /**
8543 * `TView` associated with a template. Such as `*ngIf`, `<ng-template>` etc... A `Component`
8544 * can have zero or more `Embedede` `TView`s.
8545 */
8546 Embedded = 2
8547}
8548
8549/**
8550 * Special location which allows easy identification of type. If we have an array which was
8551 * retrieved from the `LView` and that array has `true` at `TYPE` location, we know it is
8552 * `LContainer`.
8553 */
8554declare const TYPE = 1;
8555
8556/**
8557 * @description
8558 *
8559 * Represents a type that a Component or other object is instances of.
8560 *
8561 * An example of a `Type` is `MyCustomComponent` class, which in JavaScript is represented by
8562 * the `MyCustomComponent` constructor function.
8563 *
8564 * @publicApi
8565 */
8566export declare const Type: FunctionConstructor;
8567
8568export declare interface Type<T> extends Function {
8569 new (...args: any[]): T;
8570}
8571
8572declare type Type_2 = Function;
8573
8574/**
8575 * An interface implemented by all Angular type decorators, which allows them to be used as
8576 * decorators as well as Angular syntax.
8577 *
8578 * ```
8579 * @ng.Component({...})
8580 * class MyClass {...}
8581 * ```
8582 *
8583 * @publicApi
8584 */
8585export declare interface TypeDecorator {
8586 /**
8587 * Invoke as decorator.
8588 */
8589 <T extends Type<any>>(type: T): T;
8590 (target: Object, propertyKey?: string | symbol, parameterIndex?: number): void;
8591}
8592
8593/**
8594 * Configures the `Injector` to return an instance of `Type` when `Type' is used as the token.
8595 *
8596 * Create an instance by invoking the `new` operator and supplying additional arguments.
8597 * This form is a short form of `TypeProvider`;
8598 *
8599 * For more details, see the ["Dependency Injection Guide"](guide/dependency-injection).
8600 *
8601 * @usageNotes
8602 *
8603 * {@example core/di/ts/provider_spec.ts region='TypeProvider'}
8604 *
8605 * @publicApi
8606 */
8607export declare interface TypeProvider extends Type<any> {
8608}
8609
8610/**
8611 * Configures the `Injector` to return a value for a token.
8612 * @see ["Dependency Injection Guide"](guide/dependency-injection).
8613 *
8614 * @usageNotes
8615 *
8616 * ### Example
8617 *
8618 * {@example core/di/ts/provider_spec.ts region='ValueProvider'}
8619 *
8620 * ### Multi-value example
8621 *
8622 * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
8623 *
8624 * @publicApi
8625 */
8626export declare interface ValueProvider extends ValueSansProvider {
8627 /**
8628 * An injection token. Typically an instance of `Type` or `InjectionToken`, but can be `any`.
8629 */
8630 provide: any;
8631 /**
8632 * When true, injector returns an array of instances. This is useful to allow multiple
8633 * providers spread across many files to provide configuration information to a common token.
8634 */
8635 multi?: boolean;
8636}
8637
8638/**
8639 * Configures the `Injector` to return a value for a token.
8640 * Base for `ValueProvider` decorator.
8641 *
8642 * @publicApi
8643 */
8644export declare interface ValueSansProvider {
8645 /**
8646 * The value to inject.
8647 */
8648 useValue: any;
8649}
8650
8651/**
8652 * @publicApi
8653 */
8654export declare const VERSION: Version;
8655
8656
8657/**
8658 * @description Represents the version of Angular
8659 *
8660 * @publicApi
8661 */
8662export declare class Version {
8663 full: string;
8664 readonly major: string;
8665 readonly minor: string;
8666 readonly patch: string;
8667 constructor(full: string);
8668}
8669
8670declare const VIEW_REFS = 8;
8671
8672/**
8673 * Type of the ViewChild metadata.
8674 *
8675 * @publicApi
8676 */
8677export declare type ViewChild = Query;
8678
8679/**
8680 * ViewChild decorator and metadata.
8681 *
8682 * @Annotation
8683 * @publicApi
8684 */
8685export declare const ViewChild: ViewChildDecorator;
8686
8687/**
8688 * Type of the ViewChild decorator / constructor function.
8689 *
8690 * @see `ViewChild`.
8691 * @publicApi
8692 */
8693export declare interface ViewChildDecorator {
8694 /**
8695 * @description
8696 * Property decorator that configures a view query.
8697 * The change detector looks for the first element or the directive matching the selector
8698 * in the view DOM. If the view DOM changes, and a new child matches the selector,
8699 * the property is updated.
8700 *
8701 * View queries are set before the `ngAfterViewInit` callback is called.
8702 *
8703 * **Metadata Properties**:
8704 *
8705 * * **selector** - The directive type or the name used for querying.
8706 * * **read** - Used to read a different token from the queried elements.
8707 * * **static** - True to resolve query results before change detection runs,
8708 * false to resolve after change detection. Defaults to false.
8709 *
8710 *
8711 * The following selectors are supported.
8712 * * Any class with the `@Component` or `@Directive` decorator
8713 * * A template reference variable as a string (e.g. query `<my-component #cmp></my-component>`
8714 * with `@ViewChild('cmp')`)
8715 * * Any provider defined in the child component tree of the current component (e.g.
8716 * `@ViewChild(SomeService) someService: SomeService`)
8717 * * Any provider defined through a string token (e.g. `@ViewChild('someToken') someTokenVal:
8718 * any`)
8719 * * A `TemplateRef` (e.g. query `<ng-template></ng-template>` with `@ViewChild(TemplateRef)
8720 * template;`)
8721 *
8722 * The following values are supported by `read`:
8723 * * Any class with the `@Component` or `@Directive` decorator
8724 * * Any provider defined on the injector of the component that is matched by the `selector` of
8725 * this query
8726 * * Any provider defined through a string token (e.g. `{provide: 'token', useValue: 'val'}`)
8727 * * `TemplateRef`, `ElementRef`, and `ViewContainerRef`
8728 *
8729 * @usageNotes
8730 *
8731 * {@example core/di/ts/viewChild/view_child_example.ts region='Component'}
8732 *
8733 * ### Example 2
8734 *
8735 * {@example core/di/ts/viewChild/view_child_howto.ts region='HowTo'}
8736 *
8737 * @Annotation
8738 */
8739 (selector: ProviderToken<unknown> | Function | string, opts?: {
8740 read?: any;
8741 static?: boolean;
8742 }): any;
8743 new (selector: ProviderToken<unknown> | Function | string, opts?: {
8744 read?: any;
8745 static?: boolean;
8746 }): ViewChild;
8747}
8748
8749/**
8750 * Type of the ViewChildren metadata.
8751 *
8752 * @publicApi
8753 */
8754export declare type ViewChildren = Query;
8755
8756/**
8757 * ViewChildren decorator and metadata.
8758 *
8759 * @Annotation
8760 * @publicApi
8761 */
8762export declare const ViewChildren: ViewChildrenDecorator;
8763
8764/**
8765 * Type of the ViewChildren decorator / constructor function.
8766 *
8767 * @see `ViewChildren`.
8768 *
8769 * @publicApi
8770 */
8771export declare interface ViewChildrenDecorator {
8772 /**
8773 * @description
8774 * Property decorator that configures a view query.
8775 *
8776 * Use to get the `QueryList` of elements or directives from the view DOM.
8777 * Any time a child element is added, removed, or moved, the query list will be updated,
8778 * and the changes observable of the query list will emit a new value.
8779 *
8780 * View queries are set before the `ngAfterViewInit` callback is called.
8781 *
8782 * **Metadata Properties**:
8783 *
8784 * * **selector** - The directive type or the name used for querying.
8785 * * **read** - Used to read a different token from the queried elements.
8786 * * **emitDistinctChangesOnly** - The ` QueryList#changes` observable will emit new values only
8787 * if the QueryList result has changed. When `false` the `changes` observable might emit even
8788 * if the QueryList has not changed.
8789 * ** Note: *** This config option is **deprecated**, it will be permanently set to `true` and
8790 * removed in future versions of Angular.
8791 *
8792 * The following selectors are supported.
8793 * * Any class with the `@Component` or `@Directive` decorator
8794 * * A template reference variable as a string (e.g. query `<my-component #cmp></my-component>`
8795 * with `@ViewChildren('cmp')`)
8796 * * Any provider defined in the child component tree of the current component (e.g.
8797 * `@ViewChildren(SomeService) someService!: SomeService`)
8798 * * Any provider defined through a string token (e.g. `@ViewChildren('someToken')
8799 * someTokenVal!: any`)
8800 * * A `TemplateRef` (e.g. query `<ng-template></ng-template>` with `@ViewChildren(TemplateRef)
8801 * template;`)
8802 *
8803 * In addition, multiple string selectors can be separated with a comma (e.g.
8804 * `@ViewChildren('cmp1,cmp2')`)
8805 *
8806 * The following values are supported by `read`:
8807 * * Any class with the `@Component` or `@Directive` decorator
8808 * * Any provider defined on the injector of the component that is matched by the `selector` of
8809 * this query
8810 * * Any provider defined through a string token (e.g. `{provide: 'token', useValue: 'val'}`)
8811 * * `TemplateRef`, `ElementRef`, and `ViewContainerRef`
8812 *
8813 * @usageNotes
8814 *
8815 * {@example core/di/ts/viewChildren/view_children_howto.ts region='HowTo'}
8816 *
8817 * ### Another example
8818 *
8819 * {@example core/di/ts/viewChildren/view_children_example.ts region='Component'}
8820 *
8821 * @Annotation
8822 */
8823 (selector: ProviderToken<unknown> | Function | string, opts?: {
8824 read?: any;
8825 emitDistinctChangesOnly?: boolean;
8826 }): any;
8827 new (selector: ProviderToken<unknown> | Function | string, opts?: {
8828 read?: any;
8829 emitDistinctChangesOnly?: boolean;
8830 }): ViewChildren;
8831}
8832
8833/**
8834 * Represents a container where one or more views can be attached to a component.
8835 *
8836 * Can contain *host views* (created by instantiating a
8837 * component with the `createComponent()` method), and *embedded views*
8838 * (created by instantiating a `TemplateRef` with the `createEmbeddedView()` method).
8839 *
8840 * A view container instance can contain other view containers,
8841 * creating a [view hierarchy](guide/glossary#view-tree).
8842 *
8843 * @see `ComponentRef`
8844 * @see `EmbeddedViewRef`
8845 *
8846 * @publicApi
8847 */
8848export declare abstract class ViewContainerRef {
8849 /**
8850 * Anchor element that specifies the location of this container in the containing view.
8851 * Each view container can have only one anchor element, and each anchor element
8852 * can have only a single view container.
8853 *
8854 * Root elements of views attached to this container become siblings of the anchor element in
8855 * the rendered view.
8856 *
8857 * Access the `ViewContainerRef` of an element by placing a `Directive` injected
8858 * with `ViewContainerRef` on the element, or use a `ViewChild` query.
8859 *
8860 * <!-- TODO: rename to anchorElement -->
8861 */
8862 abstract get element(): ElementRef;
8863 /**
8864 * The [dependency injector](guide/glossary#injector) for this view container.
8865 */
8866 abstract get injector(): Injector;
8867 /** @deprecated No replacement */
8868 abstract get parentInjector(): Injector;
8869 /**
8870 * Destroys all views in this container.
8871 */
8872 abstract clear(): void;
8873 /**
8874 * Retrieves a view from this container.
8875 * @param index The 0-based index of the view to retrieve.
8876 * @returns The `ViewRef` instance, or null if the index is out of range.
8877 */
8878 abstract get(index: number): ViewRef | null;
8879 /**
8880 * Reports how many views are currently attached to this container.
8881 * @returns The number of views.
8882 */
8883 abstract get length(): number;
8884 /**
8885 * Instantiates an embedded view and inserts it
8886 * into this container.
8887 * @param templateRef The HTML template that defines the view.
8888 * @param context The data-binding context of the embedded view, as declared
8889 * in the `<ng-template>` usage.
8890 * @param index The 0-based index at which to insert the new view into this container.
8891 * If not specified, appends the new view as the last entry.
8892 *
8893 * @returns The `ViewRef` instance for the newly created view.
8894 */
8895 abstract createEmbeddedView<C>(templateRef: TemplateRef<C>, context?: C, index?: number): EmbeddedViewRef<C>;
8896 /**
8897 * Instantiates a single component and inserts its host view into this container.
8898 *
8899 * @param componentFactory The factory to use.
8900 * @param index The index at which to insert the new component's host view into this container.
8901 * If not specified, appends the new view as the last entry.
8902 * @param injector The injector to use as the parent for the new component.
8903 * @param projectableNodes
8904 * @param ngModule
8905 *
8906 * @returns The new component instance, containing the host view.
8907 *
8908 */
8909 abstract createComponent<C>(componentFactory: ComponentFactory<C>, index?: number, injector?: Injector, projectableNodes?: any[][], ngModule?: NgModuleRef<any>): ComponentRef<C>;
8910 /**
8911 * Inserts a view into this container.
8912 * @param viewRef The view to insert.
8913 * @param index The 0-based index at which to insert the view.
8914 * If not specified, appends the new view as the last entry.
8915 * @returns The inserted `ViewRef` instance.
8916 *
8917 */
8918 abstract insert(viewRef: ViewRef, index?: number): ViewRef;
8919 /**
8920 * Moves a view to a new location in this container.
8921 * @param viewRef The view to move.
8922 * @param index The 0-based index of the new location.
8923 * @returns The moved `ViewRef` instance.
8924 */
8925 abstract move(viewRef: ViewRef, currentIndex: number): ViewRef;
8926 /**
8927 * Returns the index of a view within the current container.
8928 * @param viewRef The view to query.
8929 * @returns The 0-based index of the view's position in this container,
8930 * or `-1` if this container doesn't contain the view.
8931 */
8932 abstract indexOf(viewRef: ViewRef): number;
8933 /**
8934 * Destroys a view attached to this container
8935 * @param index The 0-based index of the view to destroy.
8936 * If not specified, the last view in the container is removed.
8937 */
8938 abstract remove(index?: number): void;
8939 /**
8940 * Detaches a view from this container without destroying it.
8941 * Use along with `insert()` to move a view within the current container.
8942 * @param index The 0-based index of the view to detach.
8943 * If not specified, the last view in the container is detached.
8944 */
8945 abstract detach(index?: number): ViewRef | null;
8946}
8947
8948/**
8949 * View instance data.
8950 * Attention: Adding fields to this is performance sensitive!
8951 */
8952declare interface ViewData {
8953 def: ɵViewDefinition;
8954 root: RootData;
8955 renderer: Renderer2;
8956 parentNodeDef: NodeDef | null;
8957 parent: ViewData | null;
8958 viewContainerParent: ViewData | null;
8959 component: any;
8960 context: any;
8961 nodes: {
8962 [key: number]: NodeData;
8963 };
8964 state: ViewState;
8965 oldValues: any[];
8966 disposables: DisposableFn[] | null;
8967 initIndex: number;
8968}
8969
8970declare interface ViewDefinitionFactory extends DefinitionFactory<ɵViewDefinition> {
8971}
8972
8973
8974/**
8975 * Defines template and style encapsulation options available for Component's {@link Component}.
8976 *
8977 * See {@link Component#encapsulation encapsulation}.
8978 *
8979 * @usageNotes
8980 * ### Example
8981 *
8982 * {@example core/ts/metadata/encapsulation.ts region='longform'}
8983 *
8984 * @publicApi
8985 */
8986export declare enum ViewEncapsulation {
8987 /**
8988 * Emulate `Native` scoping of styles by adding an attribute containing surrogate id to the Host
8989 * Element and pre-processing the style rules provided via {@link Component#styles styles} or
8990 * {@link Component#styleUrls styleUrls}, and adding the new Host Element attribute to all
8991 * selectors.
8992 *
8993 * This is the default option.
8994 */
8995 Emulated = 0,
8996 /**
8997 * Don't provide any template or style encapsulation.
8998 */
8999 None = 2,
9000 /**
9001 * Use Shadow DOM to encapsulate styles.
9002 *
9003 * For the DOM this means using modern [Shadow
9004 * DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_shadow_DOM) and
9005 * creating a ShadowRoot for Component's Host Element.
9006 */
9007 ShadowDom = 3
9008}
9009
9010declare enum ViewEncapsulation_2 {
9011 Emulated = 0,
9012 None = 2,
9013 ShadowDom = 3
9014}
9015
9016declare interface viewEngine_ChangeDetectorRef_interface extends ChangeDetectorRef {
9017}
9018
9019declare interface ViewHandleEventFn {
9020 (view: ViewData, nodeIndex: number, eventName: string, event: any): boolean;
9021}
9022
9023/**
9024 * Definition of what a view queries function should look like.
9025 */
9026declare type ViewQueriesFunction<T> = <U extends T>(rf: ɵRenderFlags, ctx: U) => void;
9027
9028/**
9029 * Represents an Angular [view](guide/glossary#view "Definition").
9030 *
9031 * @see {@link ChangeDetectorRef#usage-notes Change detection usage}
9032 *
9033 * @publicApi
9034 */
9035export declare abstract class ViewRef extends ChangeDetectorRef {
9036 /**
9037 * Destroys this view and all of the data structures associated with it.
9038 */
9039 abstract destroy(): void;
9040 /**
9041 * Reports whether this view has been destroyed.
9042 * @returns True after the `destroy()` method has been called, false otherwise.
9043 */
9044 abstract get destroyed(): boolean;
9045 /**
9046 * A lifecycle hook that provides additional developer-defined cleanup
9047 * functionality for views.
9048 * @param callback A handler function that cleans up developer-defined data
9049 * associated with a view. Called when the `destroy()` method is invoked.
9050 */
9051 abstract onDestroy(callback: Function): any /** TODO #9100 */;
9052}
9053
9054declare class ViewRef_2<T> implements EmbeddedViewRef<T>, InternalViewRef, viewEngine_ChangeDetectorRef_interface {
9055 /**
9056 * This represents the `LView` associated with the point where `ChangeDetectorRef` was
9057 * requested.
9058 *
9059 * This may be different from `_lView` if the `_cdRefInjectingView` is an embedded view.
9060 */
9061 private _cdRefInjectingView?;
9062 private _appRef;
9063 private _attachedToViewContainer;
9064 get rootNodes(): any[];
9065 constructor(
9066 /**
9067 * This represents `LView` associated with the component when ViewRef is a ChangeDetectorRef.
9068 *
9069 * When ViewRef is created for a dynamic component, this also represents the `LView` for the
9070 * component.
9071 *
9072 * For a "regular" ViewRef created for an embedded view, this is the `LView` for the embedded
9073 * view.
9074 *
9075 * @internal
9076 */
9077 _lView: ɵangular_packages_core_core_ca,
9078 /**
9079 * This represents the `LView` associated with the point where `ChangeDetectorRef` was
9080 * requested.
9081 *
9082 * This may be different from `_lView` if the `_cdRefInjectingView` is an embedded view.
9083 */
9084 _cdRefInjectingView?: ɵangular_packages_core_core_ca | undefined);
9085 get context(): T;
9086 set context(value: T);
9087 get destroyed(): boolean;
9088 destroy(): void;
9089 onDestroy(callback: Function): void;
9090 /**
9091 * Marks a view and all of its ancestors dirty.
9092 *
9093 * This can be used to ensure an {@link ChangeDetectionStrategy#OnPush OnPush} component is
9094 * checked when it needs to be re-rendered but the two normal triggers haven't marked it
9095 * dirty (i.e. inputs haven't changed and events haven't fired in the view).
9096 *
9097 * <!-- TODO: Add a link to a chapter on OnPush components -->
9098 *
9099 * @usageNotes
9100 * ### Example
9101 *
9102 * ```typescript
9103 * @Component({
9104 * selector: 'app-root',
9105 * template: `Number of ticks: {{numberOfTicks}}`
9106 * changeDetection: ChangeDetectionStrategy.OnPush,
9107 * })
9108 * class AppComponent {
9109 * numberOfTicks = 0;
9110 *
9111 * constructor(private ref: ChangeDetectorRef) {
9112 * setInterval(() => {
9113 * this.numberOfTicks++;
9114 * // the following is required, otherwise the view will not be updated
9115 * this.ref.markForCheck();
9116 * }, 1000);
9117 * }
9118 * }
9119 * ```
9120 */
9121 markForCheck(): void;
9122 /**
9123 * Detaches the view from the change detection tree.
9124 *
9125 * Detached views will not be checked during change detection runs until they are
9126 * re-attached, even if they are dirty. `detach` can be used in combination with
9127 * {@link ChangeDetectorRef#detectChanges detectChanges} to implement local change
9128 * detection checks.
9129 *
9130 * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
9131 * <!-- TODO: Add a live demo once ref.detectChanges is merged into master -->
9132 *
9133 * @usageNotes
9134 * ### Example
9135 *
9136 * The following example defines a component with a large list of readonly data.
9137 * Imagine the data changes constantly, many times per second. For performance reasons,
9138 * we want to check and update the list every five seconds. We can do that by detaching
9139 * the component's change detector and doing a local check every five seconds.
9140 *
9141 * ```typescript
9142 * class DataProvider {
9143 * // in a real application the returned data will be different every time
9144 * get data() {
9145 * return [1,2,3,4,5];
9146 * }
9147 * }
9148 *
9149 * @Component({
9150 * selector: 'giant-list',
9151 * template: `
9152 * <li *ngFor="let d of dataProvider.data">Data {{d}}</li>
9153 * `,
9154 * })
9155 * class GiantList {
9156 * constructor(private ref: ChangeDetectorRef, private dataProvider: DataProvider) {
9157 * ref.detach();
9158 * setInterval(() => {
9159 * this.ref.detectChanges();
9160 * }, 5000);
9161 * }
9162 * }
9163 *
9164 * @Component({
9165 * selector: 'app',
9166 * providers: [DataProvider],
9167 * template: `
9168 * <giant-list><giant-list>
9169 * `,
9170 * })
9171 * class App {
9172 * }
9173 * ```
9174 */
9175 detach(): void;
9176 /**
9177 * Re-attaches a view to the change detection tree.
9178 *
9179 * This can be used to re-attach views that were previously detached from the tree
9180 * using {@link ChangeDetectorRef#detach detach}. Views are attached to the tree by default.
9181 *
9182 * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
9183 *
9184 * @usageNotes
9185 * ### Example
9186 *
9187 * The following example creates a component displaying `live` data. The component will detach
9188 * its change detector from the main change detector tree when the component's live property
9189 * is set to false.
9190 *
9191 * ```typescript
9192 * class DataProvider {
9193 * data = 1;
9194 *
9195 * constructor() {
9196 * setInterval(() => {
9197 * this.data = this.data * 2;
9198 * }, 500);
9199 * }
9200 * }
9201 *
9202 * @Component({
9203 * selector: 'live-data',
9204 * inputs: ['live'],
9205 * template: 'Data: {{dataProvider.data}}'
9206 * })
9207 * class LiveData {
9208 * constructor(private ref: ChangeDetectorRef, private dataProvider: DataProvider) {}
9209 *
9210 * set live(value) {
9211 * if (value) {
9212 * this.ref.reattach();
9213 * } else {
9214 * this.ref.detach();
9215 * }
9216 * }
9217 * }
9218 *
9219 * @Component({
9220 * selector: 'app-root',
9221 * providers: [DataProvider],
9222 * template: `
9223 * Live Update: <input type="checkbox" [(ngModel)]="live">
9224 * <live-data [live]="live"><live-data>
9225 * `,
9226 * })
9227 * class AppComponent {
9228 * live = true;
9229 * }
9230 * ```
9231 */
9232 reattach(): void;
9233 /**
9234 * Checks the view and its children.
9235 *
9236 * This can also be used in combination with {@link ChangeDetectorRef#detach detach} to implement
9237 * local change detection checks.
9238 *
9239 * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
9240 * <!-- TODO: Add a live demo once ref.detectChanges is merged into master -->
9241 *
9242 * @usageNotes
9243 * ### Example
9244 *
9245 * The following example defines a component with a large list of readonly data.
9246 * Imagine, the data changes constantly, many times per second. For performance reasons,
9247 * we want to check and update the list every five seconds.
9248 *
9249 * We can do that by detaching the component's change detector and doing a local change detection
9250 * check every five seconds.
9251 *
9252 * See {@link ChangeDetectorRef#detach detach} for more information.
9253 */
9254 detectChanges(): void;
9255 /**
9256 * Checks the change detector and its children, and throws if any changes are detected.
9257 *
9258 * This is used in development mode to verify that running change detection doesn't
9259 * introduce other changes.
9260 */
9261 checkNoChanges(): void;
9262 attachToViewContainerRef(): void;
9263 detachFromAppRef(): void;
9264 attachToAppRef(appRef: ViewRefTracker): void;
9265}
9266
9267/**
9268 * Interface for tracking root `ViewRef`s in `ApplicationRef`.
9269 *
9270 * NOTE: Importing `ApplicationRef` here directly creates circular dependency, which is why we have
9271 * a subset of the `ApplicationRef` interface `ViewRefTracker` here.
9272 */
9273declare interface ViewRefTracker {
9274 detachView(viewRef: ViewRef): void;
9275}
9276
9277/**
9278 * Bitmask of states
9279 */
9280declare const enum ViewState {
9281 BeforeFirstCheck = 1,
9282 FirstCheck = 2,
9283 Attached = 4,
9284 ChecksEnabled = 8,
9285 IsProjectedView = 16,
9286 CheckProjectedView = 32,
9287 CheckProjectedViews = 64,
9288 Destroyed = 128,
9289 InitState_Mask = 1792,
9290 InitState_BeforeInit = 0,
9291 InitState_CallingOnInit = 256,
9292 InitState_CallingAfterContentInit = 512,
9293 InitState_CallingAfterViewInit = 768,
9294 InitState_AfterInit = 1024,
9295 CatDetectChanges = 12,
9296 CatInit = 13
9297}
9298
9299declare interface ViewUpdateFn {
9300 (check: NodeCheckFn, view: ViewData): void;
9301}
9302
9303/**
9304 * Indicates that the result of a {@link Pipe} transformation has changed even though the
9305 * reference has not changed.
9306 *
9307 * Wrapped values are unwrapped automatically during the change detection, and the unwrapped value
9308 * is stored.
9309 *
9310 * Example:
9311 *
9312 * ```
9313 * if (this._latestValue === this._latestReturnedValue) {
9314 * return this._latestReturnedValue;
9315 * } else {
9316 * this._latestReturnedValue = this._latestValue;
9317 * return WrappedValue.wrap(this._latestValue); // this will force update
9318 * }
9319 * ```
9320 *
9321 * @publicApi
9322 * @deprecated from v10 stop using. (No replacement, deemed unnecessary.)
9323 */
9324export declare class WrappedValue {
9325 /** @deprecated from 5.3, use `unwrap()` instead - will switch to protected */
9326 wrapped: any;
9327 constructor(value: any);
9328 /** Creates a wrapped value. */
9329 static wrap(value: any): WrappedValue;
9330 /**
9331 * Returns the underlying value of a wrapped value.
9332 * Returns the given `value` when it is not wrapped.
9333 **/
9334 static unwrap(value: any): any;
9335 /** Returns true if `value` is a wrapped value. */
9336 static isWrapped(value: any): value is WrappedValue;
9337}
9338
9339/**
9340 * Sanitizes the given unsafe, untrusted HTML fragment, and returns HTML text that is safe to add to
9341 * the DOM in a browser environment.
9342 */
9343export declare function ɵ_sanitizeHtml(defaultDoc: any, unsafeHtmlInput: string): TrustedHTML | string;
9344
9345
9346export declare function ɵ_sanitizeUrl(url: string): string;
9347
9348export declare const ɵALLOW_MULTIPLE_PLATFORMS: InjectionToken<boolean>;
9349
9350export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType.Html): value is ɵSafeHtml;
9351
9352export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType.ResourceUrl): value is ɵSafeResourceUrl;
9353
9354export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType.Script): value is ɵSafeScript;
9355
9356export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType.Style): value is ɵSafeStyle;
9357
9358export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType.Url): value is ɵSafeUrl;
9359
9360export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType): boolean;
9361
9362export declare function ɵand(flags: ɵNodeFlags, matchedQueriesDsl: null | [string | number, ɵQueryValueType][], ngContentIndex: null | number, childCount: number, handleEvent?: null | ElementHandleEventFn, templateFactory?: ViewDefinitionFactory): NodeDef;
9363
9364/** Checks whether a function is wrapped by a `forwardRef`. */
9365export declare function ɵangular_packages_core_core_a(fn: any): fn is () => any;
9366
9367export declare function ɵangular_packages_core_core_b<T>(token: ProviderToken<T>): T;
9368
9369export declare function ɵangular_packages_core_core_b<T>(token: ProviderToken<T>, flags?: InjectFlags): T | null;
9370
9371/**
9372 * Schedule work at next available slot.
9373 *
9374 * In Ivy this is just `requestAnimationFrame`. For compatibility reasons when bootstrapped
9375 * using `platformRef.bootstrap` we need to use `NgZone.onStable` as the scheduling mechanism.
9376 * This overrides the scheduling mechanism in Ivy to `NgZone.onStable`.
9377 *
9378 * @param ngZone NgZone to use for scheduling.
9379 */
9380export declare function ɵangular_packages_core_core_ba(ngZone: NgZone): (fn: () => void) => void;
9381
9382/**
9383 * USD currency code that the application uses by default for CurrencyPipe when no
9384 * DEFAULT_CURRENCY_CODE is provided.
9385 */
9386export declare const ɵangular_packages_core_core_bb = "USD";
9387
9388export declare function ɵangular_packages_core_core_bc(checkIndex: number, flags: ɵNodeFlags, matchedQueriesDsl: [string | number, ɵQueryValueType][] | null, childCount: number, token: any, value: any, deps: ([ɵDepFlags, any] | any)[], bindings?: BindingDef[], outputs?: OutputDef[]): NodeDef;
9389
9390export declare abstract class ɵangular_packages_core_core_bd {
9391 abstract get view(): ViewData;
9392 abstract get nodeIndex(): number | null;
9393 abstract get injector(): Injector;
9394 abstract get component(): any;
9395 abstract get providerTokens(): any[];
9396 abstract get references(): {
9397 [key: string]: any;
9398 };
9399 abstract get context(): any;
9400 abstract get componentRenderElement(): any;
9401 abstract get renderNode(): any;
9402 abstract logError(console: Console, ...values: any[]): void;
9403}
9404
9405export declare function ɵangular_packages_core_core_be<T>(definition: ɵDirectiveDef<T>): typeof rememberChangeHistoryAndInvokeOnChangesHook;
9406
9407/**
9408 * A change detection scheduler token for {@link RootContext}. This token is the default value used
9409 * for the default `RootContext` found in the {@link ROOT_CONTEXT} token.
9410 */
9411export declare const ɵangular_packages_core_core_bf: InjectionToken<(fn: () => void) => void>;
9412
9413/**
9414 * Inject static attribute value into directive constructor.
9415 *
9416 * This method is used with `factory` functions which are generated as part of
9417 * `defineDirective` or `defineComponent`. The method retrieves the static value
9418 * of an attribute. (Dynamic attributes are not supported since they are not resolved
9419 * at the time of injection and can change over time.)
9420 *
9421 * # Example
9422 * Given:
9423 * ```
9424 * @Component(...)
9425 * class MyComponent {
9426 * constructor(@Attribute('title') title: string) { ... }
9427 * }
9428 * ```
9429 * When instantiated with
9430 * ```
9431 * <my-component title="Hello"></my-component>
9432 * ```
9433 *
9434 * Then factory method generated is:
9435 * ```
9436 * MyComponent.ɵcmp = defineComponent({
9437 * factory: () => new MyComponent(injectAttribute('title'))
9438 * ...
9439 * })
9440 * ```
9441 *
9442 * @publicApi
9443 */
9444export declare function ɵangular_packages_core_core_bg(tNode: TNode, attrNameToInject: string): string | null;
9445
9446/**
9447 * Return the current `LView`.
9448 */
9449export declare function ɵangular_packages_core_core_bh(): ɵangular_packages_core_core_ca;
9450
9451export declare function ɵangular_packages_core_core_bi(): number;
9452
9453export declare function ɵangular_packages_core_core_bj<T = any>(level: number): T;
9454
9455/** Static data for an element */
9456export declare interface ɵangular_packages_core_core_bk extends TNode {
9457 /** Index in the data[] array */
9458 index: number;
9459 child: ɵangular_packages_core_core_bk | TTextNode | TElementContainerNode | TContainerNode | TProjectionNode | null;
9460 /**
9461 * Element nodes will have parents unless they are the first node of a component or
9462 * embedded view (which means their parent is in a different view and must be
9463 * retrieved using viewData[HOST_NODE]).
9464 */
9465 parent: ɵangular_packages_core_core_bk | TElementContainerNode | null;
9466 tViews: null;
9467 /**
9468 * If this is a component TNode with projection, this will be an array of projected
9469 * TNodes or native nodes (see TNode.projection for more info). If it's a regular element node
9470 * or a component without projection, it will be null.
9471 */
9472 projection: (TNode | RNode[])[] | null;
9473 /**
9474 * Stores TagName
9475 */
9476 value: string;
9477}
9478
9479/**
9480 * If the value of the provided exp has changed, calls the pure function to return
9481 * an updated value. Or if the value has not changed, returns cached value.
9482 *
9483 * @param lView LView in which the function is being executed.
9484 * @param bindingRoot Binding root index.
9485 * @param slotOffset the offset from binding root to the reserved slot
9486 * @param pureFn Function that returns an updated value
9487 * @param exp Updated expression value
9488 * @param thisArg Optional calling context of pureFn
9489 * @returns Updated or cached value
9490 */
9491export declare function ɵangular_packages_core_core_bl(lView: ɵangular_packages_core_core_ca, bindingRoot: number, slotOffset: number, pureFn: (v: any) => any, exp: any, thisArg?: any): any;
9492
9493/**
9494 * If the value of any provided exp has changed, calls the pure function to return
9495 * an updated value. Or if no values have changed, returns cached value.
9496 *
9497 * @param lView LView in which the function is being executed.
9498 * @param bindingRoot Binding root index.
9499 * @param slotOffset the offset from binding root to the reserved slot
9500 * @param pureFn
9501 * @param exp1
9502 * @param exp2
9503 * @param thisArg Optional calling context of pureFn
9504 * @returns Updated or cached value
9505 */
9506export declare function ɵangular_packages_core_core_bm(lView: ɵangular_packages_core_core_ca, bindingRoot: number, slotOffset: number, pureFn: (v1: any, v2: any) => any, exp1: any, exp2: any, thisArg?: any): any;
9507
9508/**
9509 * If the value of any provided exp has changed, calls the pure function to return
9510 * an updated value. Or if no values have changed, returns cached value.
9511 *
9512 * @param lView LView in which the function is being executed.
9513 * @param bindingRoot Binding root index.
9514 * @param slotOffset the offset from binding root to the reserved slot
9515 * @param pureFn
9516 * @param exp1
9517 * @param exp2
9518 * @param exp3
9519 * @param thisArg Optional calling context of pureFn
9520 * @returns Updated or cached value
9521 */
9522export declare function ɵangular_packages_core_core_bn(lView: ɵangular_packages_core_core_ca, bindingRoot: number, slotOffset: number, pureFn: (v1: any, v2: any, v3: any) => any, exp1: any, exp2: any, exp3: any, thisArg?: any): any;
9523
9524/**
9525 * If the value of any provided exp has changed, calls the pure function to return
9526 * an updated value. Or if no values have changed, returns cached value.
9527 *
9528 * @param lView LView in which the function is being executed.
9529 * @param bindingRoot Binding root index.
9530 * @param slotOffset the offset from binding root to the reserved slot
9531 * @param pureFn
9532 * @param exp1
9533 * @param exp2
9534 * @param exp3
9535 * @param exp4
9536 * @param thisArg Optional calling context of pureFn
9537 * @returns Updated or cached value
9538 *
9539 */
9540export declare function ɵangular_packages_core_core_bo(lView: ɵangular_packages_core_core_ca, bindingRoot: number, slotOffset: number, pureFn: (v1: any, v2: any, v3: any, v4: any) => any, exp1: any, exp2: any, exp3: any, exp4: any, thisArg?: any): any;
9541
9542/**
9543 * pureFunction instruction that can support any number of bindings.
9544 *
9545 * If the value of any provided exp has changed, calls the pure function to return
9546 * an updated value. Or if no values have changed, returns cached value.
9547 *
9548 * @param lView LView in which the function is being executed.
9549 * @param bindingRoot Binding root index.
9550 * @param slotOffset the offset from binding root to the reserved slot
9551 * @param pureFn A pure function that takes binding values and builds an object or array
9552 * containing those values.
9553 * @param exps An array of binding values
9554 * @param thisArg Optional calling context of pureFn
9555 * @returns Updated or cached value
9556 */
9557export declare function ɵangular_packages_core_core_bp(lView: ɵangular_packages_core_core_ca, bindingRoot: number, slotOffset: number, pureFn: (...v: any[]) => any, exps: any[], thisArg?: any): any;
9558
9559/**
9560 * Detects which sanitizer to use for URL property, based on tag name and prop name.
9561 *
9562 * The rules are based on the RESOURCE_URL context config from
9563 * `packages/compiler/src/schema/dom_security_schema.ts`.
9564 * If tag and prop names don't match Resource URL schema, use URL sanitizer.
9565 */
9566export declare function ɵangular_packages_core_core_bq(tag: string, prop: string): typeof ɵɵsanitizeResourceUrl;
9567
9568export declare function ɵangular_packages_core_core_br(name: string, props?: (...args: any[]) => any, parentClass?: any, additionalProcessing?: (target: any, name: string, ...args: any[]) => void): any;
9569
9570export declare function ɵangular_packages_core_core_bs(name: string, props?: (...args: any[]) => any, parentClass?: any): any;
9571
9572
9573/**
9574 * Special flag indicating that a decorator is of type `Inject`. It's used to make `Inject`
9575 * decorator tree-shakable (so we don't have to rely on the `instanceof` checks).
9576 * Note: this flag is not included into the `InjectFlags` since it's an internal-only API.
9577 */
9578export declare const enum ɵangular_packages_core_core_bt {
9579 Inject = -1
9580}
9581
9582/**
9583 * This enum is an exact copy of the `InjectFlags` enum above, but the difference is that this is a
9584 * const enum, so actual enum values would be inlined in generated code. The `InjectFlags` enum can
9585 * be turned into a const enum when ViewEngine is removed (see TODO at the `InjectFlags` enum
9586 * above). The benefit of inlining is that we can use these flags at the top level without affecting
9587 * tree-shaking (see "no-toplevel-property-access" tslint rule for more info).
9588 * Keep this enum in sync with `InjectFlags` enum above.
9589 */
9590export declare const enum ɵangular_packages_core_core_bu {
9591 /** Check self and check parent injector if needed */
9592 Default = 0,
9593 /**
9594 * Specifies that an injector should retrieve a dependency from any injector until reaching the
9595 * host element of the current component. (Only used with Element Injector)
9596 */
9597 Host = 1,
9598 /** Don't ascend to ancestors of the node requesting injection. */
9599 Self = 2,
9600 /** Skip the node that is requesting injection. */
9601 SkipSelf = 4,
9602 /** Inject `defaultValue` instead if token not found. */
9603 Optional = 8,
9604 /**
9605 * This token is being injected into a pipe.
9606 *
9607 * This flag is intentionally not in the public facing `InjectFlags` because it is only added by
9608 * the compiler and is not a developer applicable flag.
9609 */
9610 ForPipe = 16
9611}
9612
9613
9614export declare function ɵangular_packages_core_core_bv<T>(objWithPropertyToExtract: T): string;
9615
9616export declare class ɵangular_packages_core_core_bw implements Injector {
9617 get(token: any, notFoundValue?: any): any;
9618}
9619
9620export declare function ɵangular_packages_core_core_bx(): (<T>(token: ProviderToken<T>, flags?: InjectFlags | undefined) => T | null) | undefined;
9621
9622
9623/**
9624 * Special markers which can be left on `Type.__NG_ELEMENT_ID__` which are used by the Ivy's
9625 * `NodeInjector`. Usually these markers contain factory functions. But in case of this special
9626 * marker we can't leave behind a function because it would create tree shaking problem.
9627 *
9628 * Currently only `Injector` is special.
9629 *
9630 * NOTE: the numbers here must be negative, because positive numbers are used as IDs for bloom
9631 * filter.
9632 */
9633export declare const enum ɵangular_packages_core_core_by {
9634 /**
9635 * Marks that the current type is `Injector`
9636 */
9637 Injector = -1
9638}
9639
9640/**
9641 * Retrieve an `RNode` for a given `TNode` and `LView`.
9642 *
9643 * This function guarantees in dev mode to retrieve a non-null `RNode`.
9644 *
9645 * @param tNode
9646 * @param lView
9647 */
9648export declare function ɵangular_packages_core_core_bz(tNode: TNode, lView: ɵangular_packages_core_core_ca): RNode;
9649
9650/**
9651 * Attaches a given InjectFlag to a given decorator using monkey-patching.
9652 * Since DI decorators can be used in providers `deps` array (when provider is configured using
9653 * `useFactory`) without initialization (e.g. `Host`) and as an instance (e.g. `new Host()`), we
9654 * attach the flag to make it available both as a static property and as a field on decorator
9655 * instance.
9656 *
9657 * @param decorator Provided DI decorator.
9658 * @param flag InjectFlag that should be applied.
9659 */
9660export declare function ɵangular_packages_core_core_c(decorator: any, flag: ɵangular_packages_core_core_bu | ɵangular_packages_core_core_bt): any;
9661
9662/**
9663 * `LView` stores all of the information needed to process the instructions as
9664 * they are invoked from the template. Each embedded view and component view has its
9665 * own `LView`. When processing a particular view, we set the `viewData` to that
9666 * `LView`. When that view is done processing, the `viewData` is set back to
9667 * whatever the original `viewData` was before (the parent `LView`).
9668 *
9669 * Keeping separate state for each view facilities view insertion / deletion, so we
9670 * don't have to edit the data array based on which views are present.
9671 */
9672export declare interface ɵangular_packages_core_core_ca extends Array<any> {
9673 /**
9674 * Human readable representation of the `LView`.
9675 *
9676 * NOTE: This property only exists if `ngDevMode` is set to `true` and it is not present in
9677 * production. Its presence is purely to help debug issue in development, and should not be relied
9678 * on in production application.
9679 */
9680 debug?: LViewDebug;
9681 /**
9682 * The node into which this `LView` is inserted.
9683 */
9684 [HOST]: RElement | null;
9685 /**
9686 * The static data for this view. We need a reference to this so we can easily walk up the
9687 * node tree in DI and get the TView.data array associated with a node (where the
9688 * directive defs are stored).
9689 */
9690 readonly [TVIEW]: TView;
9691 /** Flags for this view. See LViewFlags for more info. */
9692 [FLAGS]: LViewFlags;
9693 /**
9694 * This may store an {@link LView} or {@link LContainer}.
9695 *
9696 * `LView` - The parent view. This is needed when we exit the view and must restore the previous
9697 * LView. Without this, the render method would have to keep a stack of
9698 * views as it is recursively rendering templates.
9699 *
9700 * `LContainer` - The current view is part of a container, and is an embedded view.
9701 */
9702 [PARENT]: ɵangular_packages_core_core_ca | LContainer | null;
9703 /**
9704 *
9705 * The next sibling LView or LContainer.
9706 *
9707 * Allows us to propagate between sibling view states that aren't in the same
9708 * container. Embedded views already have a node.next, but it is only set for
9709 * views in the same container. We need a way to link component views and views
9710 * across containers as well.
9711 */
9712 [NEXT]: ɵangular_packages_core_core_ca | LContainer | null;
9713 /** Queries active for this view - nodes from a view are reported to those queries. */
9714 [QUERIES]: LQueries | null;
9715 /**
9716 * Store the `TNode` of the location where the current `LView` is inserted into.
9717 *
9718 * Given:
9719 * ```
9720 * <div>
9721 * <ng-template><span></span></ng-template>
9722 * </div>
9723 * ```
9724 *
9725 * We end up with two `TView`s.
9726 * - `parent` `TView` which contains `<div><!-- anchor --></div>`
9727 * - `child` `TView` which contains `<span></span>`
9728 *
9729 * Typically the `child` is inserted into the declaration location of the `parent`, but it can be
9730 * inserted anywhere. Because it can be inserted anywhere it is not possible to store the
9731 * insertion information in the `TView` and instead we must store it in the `LView[T_HOST]`.
9732 *
9733 * So to determine where is our insertion parent we would execute:
9734 * ```
9735 * const parentLView = lView[PARENT];
9736 * const parentTNode = lView[T_HOST];
9737 * const insertionParent = parentLView[parentTNode.index];
9738 * ```
9739 *
9740 *
9741 * If `null`, this is the root view of an application (root component is in this view) and it has
9742 * no parents.
9743 */
9744 [T_HOST]: TNode | null;
9745 /**
9746 * When a view is destroyed, listeners need to be released and outputs need to be
9747 * unsubscribed. This context array stores both listener functions wrapped with
9748 * their context and output subscription instances for a particular view.
9749 *
9750 * These change per LView instance, so they cannot be stored on TView. Instead,
9751 * TView.cleanup saves an index to the necessary context in this array.
9752 *
9753 * After `LView` is created it is possible to attach additional instance specific functions at the
9754 * end of the `lView[CLENUP]` because we know that no more `T` level cleanup functions will be
9755 * addeded here.
9756 */
9757 [CLEANUP]: any[] | null;
9758 /**
9759 * - For dynamic views, this is the context with which to render the template (e.g.
9760 * `NgForContext`), or `{}` if not defined explicitly.
9761 * - For root view of the root component the context contains change detection data.
9762 * - For non-root components, the context is the component instance,
9763 * - For inline views, the context is null.
9764 */
9765 [CONTEXT]: {} | RootContext | null;
9766 /** An optional Module Injector to be used as fall back after Element Injectors are consulted. */
9767 readonly [INJECTOR_2]: Injector | null;
9768 /** Factory to be used for creating Renderer. */
9769 [RENDERER_FACTORY]: RendererFactory3;
9770 /** Renderer to be used for this view. */
9771 [RENDERER]: Renderer3;
9772 /** An optional custom sanitizer. */
9773 [SANITIZER]: Sanitizer | null;
9774 /**
9775 * Reference to the first LView or LContainer beneath this LView in
9776 * the hierarchy.
9777 *
9778 * Necessary to store this so views can traverse through their nested views
9779 * to remove listeners and call onDestroy callbacks.
9780 */
9781 [CHILD_HEAD]: ɵangular_packages_core_core_ca | LContainer | null;
9782 /**
9783 * The last LView or LContainer beneath this LView in the hierarchy.
9784 *
9785 * The tail allows us to quickly add a new state to the end of the view list
9786 * without having to propagate starting from the first child.
9787 */
9788 [CHILD_TAIL]: ɵangular_packages_core_core_ca | LContainer | null;
9789 /**
9790 * View where this view's template was declared.
9791 *
9792 * The template for a dynamically created view may be declared in a different view than
9793 * it is inserted. We already track the "insertion view" (view where the template was
9794 * inserted) in LView[PARENT], but we also need access to the "declaration view"
9795 * (view where the template was declared). Otherwise, we wouldn't be able to call the
9796 * view's template function with the proper contexts. Context should be inherited from
9797 * the declaration view tree, not the insertion view tree.
9798 *
9799 * Example (AppComponent template):
9800 *
9801 * <ng-template #foo></ng-template> <-- declared here -->
9802 * <some-comp [tpl]="foo"></some-comp> <-- inserted inside this component -->
9803 *
9804 * The <ng-template> above is declared in the AppComponent template, but it will be passed into
9805 * SomeComp and inserted there. In this case, the declaration view would be the AppComponent,
9806 * but the insertion view would be SomeComp. When we are removing views, we would want to
9807 * traverse through the insertion view to clean up listeners. When we are calling the
9808 * template function during change detection, we need the declaration view to get inherited
9809 * context.
9810 */
9811 [DECLARATION_VIEW]: ɵangular_packages_core_core_ca | null;
9812 /**
9813 * Points to the declaration component view, used to track transplanted `LView`s.
9814 *
9815 * See: `DECLARATION_VIEW` which points to the actual `LView` where it was declared, whereas
9816 * `DECLARATION_COMPONENT_VIEW` points to the component which may not be same as
9817 * `DECLARATION_VIEW`.
9818 *
9819 * Example:
9820 * ```
9821 * <#VIEW #myComp>
9822 * <div *ngIf="true">
9823 * <ng-template #myTmpl>...</ng-template>
9824 * </div>
9825 * </#VIEW>
9826 * ```
9827 * In the above case `DECLARATION_VIEW` for `myTmpl` points to the `LView` of `ngIf` whereas
9828 * `DECLARATION_COMPONENT_VIEW` points to `LView` of the `myComp` which owns the template.
9829 *
9830 * The reason for this is that all embedded views are always check-always whereas the component
9831 * view can be check-always or on-push. When we have a transplanted view it is important to
9832 * determine if we have transplanted a view from check-always declaration to on-push insertion
9833 * point. In such a case the transplanted view needs to be added to the `LContainer` in the
9834 * declared `LView` and CD during the declared view CD (in addition to the CD at the insertion
9835 * point.) (Any transplanted views which are intra Component are of no interest because the CD
9836 * strategy of declaration and insertion will always be the same, because it is the same
9837 * component.)
9838 *
9839 * Queries already track moved views in `LView[DECLARATION_LCONTAINER]` and
9840 * `LContainer[MOVED_VIEWS]`. However the queries also track `LView`s which moved within the same
9841 * component `LView`. Transplanted views are a subset of moved views, and we use
9842 * `DECLARATION_COMPONENT_VIEW` to differentiate them. As in this example.
9843 *
9844 * Example showing intra component `LView` movement.
9845 * ```
9846 * <#VIEW #myComp>
9847 * <div *ngIf="condition; then thenBlock else elseBlock"></div>
9848 * <ng-template #thenBlock>Content to render when condition is true.</ng-template>
9849 * <ng-template #elseBlock>Content to render when condition is false.</ng-template>
9850 * </#VIEW>
9851 * ```
9852 * The `thenBlock` and `elseBlock` is moved but not transplanted.
9853 *
9854 * Example showing inter component `LView` movement (transplanted view).
9855 * ```
9856 * <#VIEW #myComp>
9857 * <ng-template #myTmpl>...</ng-template>
9858 * <insertion-component [template]="myTmpl"></insertion-component>
9859 * </#VIEW>
9860 * ```
9861 * In the above example `myTmpl` is passed into a different component. If `insertion-component`
9862 * instantiates `myTmpl` and `insertion-component` is on-push then the `LContainer` needs to be
9863 * marked as containing transplanted views and those views need to be CD as part of the
9864 * declaration CD.
9865 *
9866 *
9867 * When change detection runs, it iterates over `[MOVED_VIEWS]` and CDs any child `LView`s where
9868 * the `DECLARATION_COMPONENT_VIEW` of the current component and the child `LView` does not match
9869 * (it has been transplanted across components.)
9870 *
9871 * Note: `[DECLARATION_COMPONENT_VIEW]` points to itself if the LView is a component view (the
9872 * simplest / most common case).
9873 *
9874 * see also:
9875 * - https://hackmd.io/@mhevery/rJUJsvv9H write up of the problem
9876 * - `LContainer[HAS_TRANSPLANTED_VIEWS]` which marks which `LContainer` has transplanted views.
9877 * - `LContainer[TRANSPLANT_HEAD]` and `LContainer[TRANSPLANT_TAIL]` storage for transplanted
9878 * - `LView[DECLARATION_LCONTAINER]` similar problem for queries
9879 * - `LContainer[MOVED_VIEWS]` similar problem for queries
9880 */
9881 [DECLARATION_COMPONENT_VIEW]: ɵangular_packages_core_core_ca;
9882 /**
9883 * A declaration point of embedded views (ones instantiated based on the content of a
9884 * <ng-template>), null for other types of views.
9885 *
9886 * We need to track all embedded views created from a given declaration point so we can prepare
9887 * query matches in a proper order (query matches are ordered based on their declaration point and
9888 * _not_ the insertion point).
9889 */
9890 [DECLARATION_LCONTAINER]: LContainer | null;
9891 /**
9892 * More flags for this view. See PreOrderHookFlags for more info.
9893 */
9894 [PREORDER_HOOK_FLAGS]: PreOrderHookFlags;
9895 /**
9896 * The number of direct transplanted views which need a refresh or have descendants themselves
9897 * that need a refresh but have not marked their ancestors as Dirty. This tells us that during
9898 * change detection we should still descend to find those children to refresh, even if the parents
9899 * are not `Dirty`/`CheckAlways`.
9900 */
9901 [TRANSPLANTED_VIEWS_TO_REFRESH]: number;
9902}
9903
9904/**
9905 * Returns the `RootContext` instance that is associated with
9906 * the application where the target is situated. It does this by walking the parent views until it
9907 * gets to the root view, then getting the context off of that.
9908 *
9909 * @param viewOrComponent the `LView` or component to get the root context for.
9910 */
9911export declare function ɵangular_packages_core_core_cb(viewOrComponent: ɵangular_packages_core_core_ca | {}): RootContext;
9912
9913
9914/**
9915 * Handles message string post-processing for internationalization.
9916 *
9917 * Handles message string post-processing by transforming it from intermediate
9918 * format (that might contain some markers that we need to replace) to the final
9919 * form, consumable by i18nStart instruction. Post processing steps include:
9920 *
9921 * 1. Resolve all multi-value cases (like [�*1:1��#2:1�|�#4:1�|�5�])
9922 * 2. Replace all ICU vars (like "VAR_PLURAL")
9923 * 3. Replace all placeholders used inside ICUs in a form of {PLACEHOLDER}
9924 * 4. Replace all ICU references with corresponding values (like �ICU_EXP_ICU_1�)
9925 * in case multiple ICUs have the same placeholder name
9926 *
9927 * @param message Raw translation string for post processing
9928 * @param replacements Set of replacements that should be applied
9929 *
9930 * @returns Transformed string that can be consumed by i18nStart instruction
9931 *
9932 * @codeGenApi
9933 */
9934export declare function ɵangular_packages_core_core_cc(message: string, replacements?: {
9935 [key: string]: (string | string[]);
9936}): string;
9937
9938export declare class ɵangular_packages_core_core_d implements ReflectiveInjector {
9939 private static INJECTOR_KEY;
9940 readonly parent: Injector | null;
9941 keyIds: number[];
9942 objs: any[];
9943 /**
9944 * Private
9945 */
9946 constructor(_providers: ResolvedReflectiveProvider[], _parent?: Injector);
9947 get(token: any, notFoundValue?: any): any;
9948 resolveAndCreateChild(providers: Provider[]): ReflectiveInjector;
9949 createChildFromResolved(providers: ResolvedReflectiveProvider[]): ReflectiveInjector;
9950 resolveAndInstantiate(provider: Provider): any;
9951 instantiateResolved(provider: ResolvedReflectiveProvider): any;
9952 getProviderAtIndex(index: number): ResolvedReflectiveProvider;
9953 private _getMaxNumberOfObjects;
9954 private _instantiateProvider;
9955 private _instantiate;
9956 private _getByReflectiveDependency;
9957 private _getByKey;
9958 private _getObjByKeyId;
9959 get displayName(): string;
9960 toString(): string;
9961}
9962
9963/**
9964 * `Dependency` is used by the framework to extend DI.
9965 * This is internal to Angular and should not be used directly.
9966 */
9967export declare class ɵangular_packages_core_core_e {
9968 key: ReflectiveKey;
9969 optional: boolean;
9970 visibility: Self | SkipSelf | null;
9971 constructor(key: ReflectiveKey, optional: boolean, visibility: Self | SkipSelf | null);
9972 static fromKey(key: ReflectiveKey): ɵangular_packages_core_core_e;
9973}
9974
9975/**
9976 * Resolve a list of Providers.
9977 */
9978export declare function ɵangular_packages_core_core_f(providers: Provider[]): ResolvedReflectiveProvider[];
9979
9980export declare function ɵangular_packages_core_core_g(): string;
9981
9982/** Injects a Renderer2 for the current component. */
9983export declare function ɵangular_packages_core_core_h(): Renderer2;
9984
9985/**
9986 * Creates an ElementRef from the most recent node.
9987 *
9988 * @returns The ElementRef instance to use
9989 */
9990export declare function ɵangular_packages_core_core_i(): ElementRef;
9991
9992/**
9993 * Creates an ElementRef given a node.
9994 *
9995 * @param tNode The node for which you'd like an ElementRef
9996 * @param lView The view to which the node belongs
9997 * @returns The ElementRef instance to use
9998 */
9999export declare function ɵangular_packages_core_core_j(tNode: TNode, lView: ɵangular_packages_core_core_ca): ElementRef;
10000
10001export declare function ɵangular_packages_core_core_k(id: string): NgModuleFactory<any>;
10002
10003/**
10004 * Creates a TemplateRef given a node.
10005 *
10006 * @returns The TemplateRef instance to use
10007 */
10008export declare function ɵangular_packages_core_core_l<T>(): TemplateRef<T> | null;
10009
10010/**
10011 * Creates a TemplateRef and stores it on the injector.
10012 *
10013 * @param hostTNode The node on which a TemplateRef is requested
10014 * @param hostLView The `LView` to which the node belongs
10015 * @returns The TemplateRef instance or null if we can't create a TemplateRef on a given node type
10016 */
10017export declare function ɵangular_packages_core_core_m<T>(hostTNode: TNode, hostLView: ɵangular_packages_core_core_ca): TemplateRef<T> | null;
10018
10019/**
10020 * Creates a ViewContainerRef and stores it on the injector. Or, if the ViewContainerRef
10021 * already exists, retrieves the existing ViewContainerRef.
10022 *
10023 * @returns The ViewContainerRef instance to use
10024 */
10025export declare function ɵangular_packages_core_core_n(): ViewContainerRef;
10026
10027export declare class ɵangular_packages_core_core_o {
10028 readonly listeners: DebugEventListener[];
10029 readonly parent: DebugElement | null;
10030 readonly nativeNode: any;
10031 private readonly _debugContext;
10032 constructor(nativeNode: any, parent: DebugNode | null, _debugContext: ɵangular_packages_core_core_bd);
10033 get injector(): Injector;
10034 get componentInstance(): any;
10035 get context(): any;
10036 get references(): {
10037 [key: string]: any;
10038 };
10039 get providerTokens(): any[];
10040}
10041
10042export declare class ɵangular_packages_core_core_p extends ɵangular_packages_core_core_o implements DebugElement {
10043 readonly name: string;
10044 readonly properties: {
10045 [key: string]: any;
10046 };
10047 readonly attributes: {
10048 [key: string]: string | null;
10049 };
10050 readonly classes: {
10051 [key: string]: boolean;
10052 };
10053 readonly styles: {
10054 [key: string]: string | null;
10055 };
10056 readonly childNodes: DebugNode[];
10057 readonly nativeElement: any;
10058 constructor(nativeNode: any, parent: any, _debugContext: ɵangular_packages_core_core_bd);
10059 addChild(child: DebugNode): void;
10060 removeChild(child: DebugNode): void;
10061 insertChildrenAfter(child: DebugNode, newChildren: DebugNode[]): void;
10062 insertBefore(refChild: DebugNode, newChild: DebugNode): void;
10063 query(predicate: Predicate<DebugElement>): DebugElement;
10064 queryAll(predicate: Predicate<DebugElement>): DebugElement[];
10065 queryAllNodes(predicate: Predicate<DebugNode>): DebugNode[];
10066 get children(): DebugElement[];
10067 triggerEventHandler(eventName: string, eventObj: any): void;
10068}
10069
10070export declare function ɵangular_packages_core_core_q(nativeNode: any): DebugNode | null;
10071
10072/** Returns a ChangeDetectorRef (a.k.a. a ViewRef) */
10073export declare function ɵangular_packages_core_core_r(flags: InjectFlags): ChangeDetectorRef;
10074
10075export declare class ɵangular_packages_core_core_s implements IterableDifferFactory {
10076 constructor();
10077 supports(obj: Object | null | undefined): boolean;
10078 create<V>(trackByFn?: TrackByFunction<V>): DefaultIterableDiffer<V>;
10079}
10080
10081export declare class ɵangular_packages_core_core_t<K, V> implements KeyValueDifferFactory {
10082 constructor();
10083 supports(obj: any): boolean;
10084 create<K, V>(): KeyValueDiffer<K, V>;
10085}
10086
10087export declare function ɵangular_packages_core_core_u(): IterableDiffers;
10088
10089export declare function ɵangular_packages_core_core_v(): KeyValueDiffers;
10090
10091export declare function ɵangular_packages_core_core_w(): IterableDiffers;
10092
10093export declare function ɵangular_packages_core_core_x(): KeyValueDiffers;
10094
10095export declare function ɵangular_packages_core_core_y(locale?: string): string;
10096
10097/**
10098 * A built-in [dependency injection token](guide/glossary#di-token)
10099 * that is used to configure the root injector for bootstrapping.
10100 */
10101export declare const ɵangular_packages_core_core_z: StaticProvider[];
10102
10103/**
10104 * Providers that generate a random `APP_ID_TOKEN`.
10105 * @publicApi
10106 */
10107export declare const ɵAPP_ID_RANDOM_PROVIDER: {
10108 provide: InjectionToken<string>;
10109 useFactory: typeof ɵangular_packages_core_core_g;
10110 deps: any[];
10111};
10112
10113export declare const enum ɵArgumentType {
10114 Inline = 0,
10115 Dynamic = 1
10116}
10117
10118/**
10119 * A set of marker values to be used in the attributes arrays. These markers indicate that some
10120 * items are not regular attributes and the processing should be adapted accordingly.
10121 */
10122export declare const enum ɵAttributeMarker {
10123 /**
10124 * An implicit marker which indicates that the value in the array are of `attributeKey`,
10125 * `attributeValue` format.
10126 *
10127 * NOTE: This is implicit as it is the type when no marker is present in array. We indicate that
10128 * it should not be present at runtime by the negative number.
10129 */
10130 ImplicitAttributes = -1,
10131 /**
10132 * Marker indicates that the following 3 values in the attributes array are:
10133 * namespaceUri, attributeName, attributeValue
10134 * in that order.
10135 */
10136 NamespaceURI = 0,
10137 /**
10138 * Signals class declaration.
10139 *
10140 * Each value following `Classes` designates a class name to include on the element.
10141 * ## Example:
10142 *
10143 * Given:
10144 * ```
10145 * <div class="foo bar baz">...<d/vi>
10146 * ```
10147 *
10148 * the generated code is:
10149 * ```
10150 * var _c1 = [AttributeMarker.Classes, 'foo', 'bar', 'baz'];
10151 * ```
10152 */
10153 Classes = 1,
10154 /**
10155 * Signals style declaration.
10156 *
10157 * Each pair of values following `Styles` designates a style name and value to include on the
10158 * element.
10159 * ## Example:
10160 *
10161 * Given:
10162 * ```
10163 * <div style="width:100px; height:200px; color:red">...</div>
10164 * ```
10165 *
10166 * the generated code is:
10167 * ```
10168 * var _c1 = [AttributeMarker.Styles, 'width', '100px', 'height'. '200px', 'color', 'red'];
10169 * ```
10170 */
10171 Styles = 2,
10172 /**
10173 * Signals that the following attribute names were extracted from input or output bindings.
10174 *
10175 * For example, given the following HTML:
10176 *
10177 * ```
10178 * <div moo="car" [foo]="exp" (bar)="doSth()">
10179 * ```
10180 *
10181 * the generated code is:
10182 *
10183 * ```
10184 * var _c1 = ['moo', 'car', AttributeMarker.Bindings, 'foo', 'bar'];
10185 * ```
10186 */
10187 Bindings = 3,
10188 /**
10189 * Signals that the following attribute names were hoisted from an inline-template declaration.
10190 *
10191 * For example, given the following HTML:
10192 *
10193 * ```
10194 * <div *ngFor="let value of values; trackBy:trackBy" dirA [dirB]="value">
10195 * ```
10196 *
10197 * the generated code for the `template()` instruction would include:
10198 *
10199 * ```
10200 * ['dirA', '', AttributeMarker.Bindings, 'dirB', AttributeMarker.Template, 'ngFor', 'ngForOf',
10201 * 'ngForTrackBy', 'let-value']
10202 * ```
10203 *
10204 * while the generated code for the `element()` instruction inside the template function would
10205 * include:
10206 *
10207 * ```
10208 * ['dirA', '', AttributeMarker.Bindings, 'dirB']
10209 * ```
10210 */
10211 Template = 4,
10212 /**
10213 * Signals that the following attribute is `ngProjectAs` and its value is a parsed
10214 * `CssSelector`.
10215 *
10216 * For example, given the following HTML:
10217 *
10218 * ```
10219 * <h1 attr="value" ngProjectAs="[title]">
10220 * ```
10221 *
10222 * the generated code for the `element()` instruction would include:
10223 *
10224 * ```
10225 * ['attr', 'value', AttributeMarker.ProjectAs, ['', 'title', '']]
10226 * ```
10227 */
10228 ProjectAs = 5,
10229 /**
10230 * Signals that the following attribute will be translated by runtime i18n
10231 *
10232 * For example, given the following HTML:
10233 *
10234 * ```
10235 * <div moo="car" foo="value" i18n-foo [bar]="binding" i18n-bar>
10236 * ```
10237 *
10238 * the generated code is:
10239 *
10240 * ```
10241 * var _c1 = ['moo', 'car', AttributeMarker.I18n, 'foo', 'bar'];
10242 */
10243 I18n = 6
10244}
10245
10246export declare const enum ɵBindingFlags {
10247 TypeElementAttribute = 1,
10248 TypeElementClass = 2,
10249 TypeElementStyle = 4,
10250 TypeProperty = 8,
10251 SyntheticProperty = 16,
10252 SyntheticHostProperty = 32,
10253 CatSyntheticProperty = 48,
10254 Types = 15
10255}
10256
10257/**
10258 * Mark `html` string as trusted.
10259 *
10260 * This function wraps the trusted string in `String` and brands it in a way which makes it
10261 * recognizable to {@link htmlSanitizer} to be trusted implicitly.
10262 *
10263 * @param trustedHtml `html` string which needs to be implicitly trusted.
10264 * @returns a `html` which has been branded to be implicitly trusted.
10265 */
10266export declare function ɵbypassSanitizationTrustHtml(trustedHtml: string): ɵSafeHtml;
10267
10268/**
10269 * Mark `url` string as trusted.
10270 *
10271 * This function wraps the trusted string in `String` and brands it in a way which makes it
10272 * recognizable to {@link resourceUrlSanitizer} to be trusted implicitly.
10273 *
10274 * @param trustedResourceUrl `url` string which needs to be implicitly trusted.
10275 * @returns a `url` which has been branded to be implicitly trusted.
10276 */
10277export declare function ɵbypassSanitizationTrustResourceUrl(trustedResourceUrl: string): ɵSafeResourceUrl;
10278
10279/**
10280 * Mark `script` string as trusted.
10281 *
10282 * This function wraps the trusted string in `String` and brands it in a way which makes it
10283 * recognizable to {@link scriptSanitizer} to be trusted implicitly.
10284 *
10285 * @param trustedScript `script` string which needs to be implicitly trusted.
10286 * @returns a `script` which has been branded to be implicitly trusted.
10287 */
10288export declare function ɵbypassSanitizationTrustScript(trustedScript: string): ɵSafeScript;
10289
10290/**
10291 * Mark `style` string as trusted.
10292 *
10293 * This function wraps the trusted string in `String` and brands it in a way which makes it
10294 * recognizable to {@link styleSanitizer} to be trusted implicitly.
10295 *
10296 * @param trustedStyle `style` string which needs to be implicitly trusted.
10297 * @returns a `style` hich has been branded to be implicitly trusted.
10298 */
10299export declare function ɵbypassSanitizationTrustStyle(trustedStyle: string): ɵSafeStyle;
10300
10301/**
10302 * Mark `url` string as trusted.
10303 *
10304 * This function wraps the trusted string in `String` and brands it in a way which makes it
10305 * recognizable to {@link urlSanitizer} to be trusted implicitly.
10306 *
10307 * @param trustedUrl `url` string which needs to be implicitly trusted.
10308 * @returns a `url` which has been branded to be implicitly trusted.
10309 */
10310export declare function ɵbypassSanitizationTrustUrl(trustedUrl: string): ɵSafeUrl;
10311
10312
10313export declare const enum ɵBypassType {
10314 Url = "URL",
10315 Html = "HTML",
10316 ResourceUrl = "ResourceURL",
10317 Script = "Script",
10318 Style = "Style"
10319}
10320
10321export declare function ɵccf(selector: string, componentType: Type<any>, viewDefFactory: ViewDefinitionFactory, inputs: {
10322 [propName: string]: string;
10323} | null, outputs: {
10324 [propName: string]: string;
10325}, ngContentSelectors: string[]): ComponentFactory<any>;
10326
10327/**
10328 * Defines the possible states of the default change detector.
10329 * @see `ChangeDetectorRef`
10330 */
10331export declare enum ɵChangeDetectorStatus {
10332 /**
10333 * A state in which, after calling `detectChanges()`, the change detector
10334 * state becomes `Checked`, and must be explicitly invoked or reactivated.
10335 */
10336 CheckOnce = 0,
10337 /**
10338 * A state in which change detection is skipped until the change detector mode
10339 * becomes `CheckOnce`.
10340 */
10341 Checked = 1,
10342 /**
10343 * A state in which change detection continues automatically until explicitly
10344 * deactivated.
10345 */
10346 CheckAlways = 2,
10347 /**
10348 * A state in which a change detector sub tree is not a part of the main tree and
10349 * should be skipped.
10350 */
10351 Detached = 3,
10352 /**
10353 * Indicates that the change detector encountered an error checking a binding
10354 * or calling a directive lifecycle method and is now in an inconsistent state. Change
10355 * detectors in this state do not detect changes.
10356 */
10357 Errored = 4,
10358 /**
10359 * Indicates that the change detector has been destroyed.
10360 */
10361 Destroyed = 5
10362}
10363
10364export declare function ɵclearOverrides(): void;
10365
10366export declare function ɵclearResolutionOfComponentResourcesQueue(): Map<Type<any>, Component>;
10367
10368export declare function ɵcmf(ngModuleType: Type<any>, bootstrapComponents: Type<any>[], defFactory: NgModuleDefinitionFactory): NgModuleFactory<any>;
10369
10370export declare class ɵCodegenComponentFactoryResolver implements ComponentFactoryResolver {
10371 private _parent;
10372 private _ngModule;
10373 private _factories;
10374 constructor(factories: ComponentFactory<any>[], _parent: ComponentFactoryResolver, _ngModule: NgModuleRef<any>);
10375 resolveComponentFactory<T>(component: {
10376 new (...args: any[]): T;
10377 }): ComponentFactory<T>;
10378}
10379
10380/**
10381 * Compile an Angular component according to its decorator metadata, and patch the resulting
10382 * component def (ɵcmp) onto the component type.
10383 *
10384 * Compilation may be asynchronous (due to the need to resolve URLs for the component template or
10385 * other resources, for example). In the event that compilation is not immediate, `compileComponent`
10386 * will enqueue resource resolution into a global queue and will fail to return the `ɵcmp`
10387 * until the global queue has been resolved with a call to `resolveComponentResources`.
10388 */
10389export declare function ɵcompileComponent(type: Type<any>, metadata: Component): void;
10390
10391/**
10392 * Compile an Angular directive according to its decorator metadata, and patch the resulting
10393 * directive def onto the component type.
10394 *
10395 * In the event that compilation is not immediate, `compileDirective` will return a `Promise` which
10396 * will resolve when compilation completes and the directive becomes usable.
10397 */
10398export declare function ɵcompileDirective(type: Type<any>, directive: Directive | null): void;
10399
10400/**
10401 * Compiles a module in JIT mode.
10402 *
10403 * This function automatically gets called when a class has a `@NgModule` decorator.
10404 */
10405export declare function ɵcompileNgModule(moduleType: Type<any>, ngModule?: NgModule): void;
10406
10407/**
10408 * Compiles and adds the `ɵmod`, `ɵfac` and `ɵinj` properties to the module class.
10409 *
10410 * It's possible to compile a module via this API which will allow duplicate declarations in its
10411 * root.
10412 */
10413export declare function ɵcompileNgModuleDefs(moduleType: ɵNgModuleType, ngModule: NgModule, allowDuplicateDeclarationsInRoot?: boolean): void;
10414
10415export declare function ɵcompileNgModuleFactory__POST_R3__<M>(injector: Injector, options: CompilerOptions, moduleType: Type<M>): Promise<NgModuleFactory<M>>;
10416
10417export declare function ɵcompilePipe(type: Type<any>, meta: Pipe): void;
10418
10419export declare const ɵCompiler_compileModuleAndAllComponentsAsync__POST_R3__: <T>(moduleType: Type<T>) => Promise<ModuleWithComponentFactories<T>>;
10420
10421export declare const ɵCompiler_compileModuleAndAllComponentsSync__POST_R3__: <T>(moduleType: Type<T>) => ModuleWithComponentFactories<T>;
10422
10423export declare const ɵCompiler_compileModuleAsync__POST_R3__: <T>(moduleType: Type<T>) => Promise<NgModuleFactory<T>>;
10424
10425export declare const ɵCompiler_compileModuleSync__POST_R3__: <T>(moduleType: Type<T>) => NgModuleFactory<T>;
10426
10427/**
10428 * Runtime link information for Components.
10429 *
10430 * This is an internal data structure used by the render to link
10431 * components into templates.
10432 *
10433 * NOTE: Always use `defineComponent` function to create this object,
10434 * never create the object directly since the shape of this object
10435 * can change between versions.
10436 *
10437 * See: {@link defineComponent}
10438 */
10439export declare interface ɵComponentDef<T> extends ɵDirectiveDef<T> {
10440 /**
10441 * Runtime unique component ID.
10442 */
10443 readonly id: string;
10444 /**
10445 * The View template of the component.
10446 */
10447 readonly template: ComponentTemplate<T>;
10448 /** Constants associated with the component's view. */
10449 readonly consts: TConstantsOrFactory | null;
10450 /**
10451 * An array of `ngContent[selector]` values that were found in the template.
10452 */
10453 readonly ngContentSelectors?: string[];
10454 /**
10455 * A set of styles that the component needs to be present for component to render correctly.
10456 */
10457 readonly styles: string[];
10458 /**
10459 * The number of nodes, local refs, and pipes in this component template.
10460 *
10461 * Used to calculate the length of the component's LView array, so we
10462 * can pre-fill the array and set the binding start index.
10463 */
10464 readonly decls: number;
10465 /**
10466 * The number of bindings in this component template (including pure fn bindings).
10467 *
10468 * Used to calculate the length of the component's LView array, so we
10469 * can pre-fill the array and set the host binding start index.
10470 */
10471 readonly vars: number;
10472 /**
10473 * Query-related instructions for a component.
10474 */
10475 viewQuery: ViewQueriesFunction<T> | null;
10476 /**
10477 * The view encapsulation type, which determines how styles are applied to
10478 * DOM elements. One of
10479 * - `Emulated` (default): Emulate native scoping of styles.
10480 * - `Native`: Use the native encapsulation mechanism of the renderer.
10481 * - `ShadowDom`: Use modern [ShadowDOM](https://w3c.github.io/webcomponents/spec/shadow/) and
10482 * create a ShadowRoot for component's host element.
10483 * - `None`: Do not provide any template or style encapsulation.
10484 */
10485 readonly encapsulation: ViewEncapsulation;
10486 /**
10487 * Defines arbitrary developer-defined data to be stored on a renderer instance.
10488 * This is useful for renderers that delegate to other renderers.
10489 */
10490 readonly data: {
10491 [kind: string]: any;
10492 };
10493 /** Whether or not this component's ChangeDetectionStrategy is OnPush */
10494 readonly onPush: boolean;
10495 /**
10496 * Registry of directives and components that may be found in this view.
10497 *
10498 * The property is either an array of `DirectiveDef`s or a function which returns the array of
10499 * `DirectiveDef`s. The function is necessary to be able to support forward declarations.
10500 */
10501 directiveDefs: DirectiveDefListOrFactory | null;
10502 /**
10503 * Registry of pipes that may be found in this view.
10504 *
10505 * The property is either an array of `PipeDefs`s or a function which returns the array of
10506 * `PipeDefs`s. The function is necessary to be able to support forward declarations.
10507 */
10508 pipeDefs: PipeDefListOrFactory | null;
10509 /**
10510 * The set of schemas that declare elements to be allowed in the component's template.
10511 */
10512 schemas: SchemaMetadata[] | null;
10513 /**
10514 * Ivy runtime uses this place to store the computed tView for the component. This gets filled on
10515 * the first run of component.
10516 */
10517 tView: TView | null;
10518 /**
10519 * Used to store the result of `noSideEffects` function so that it is not removed by closure
10520 * compiler. The property should never be read.
10521 */
10522 readonly _?: unknown;
10523}
10524
10525/**
10526 * A subclass of `Type` which has a static `ɵcmp`:`ComponentDef` field making it
10527 * consumable for rendering.
10528 */
10529export declare interface ɵComponentType<T> extends Type<T> {
10530 ɵcmp: unknown;
10531}
10532
10533
10534export declare class ɵConsole {
10535 log(message: string): void;
10536 warn(message: string): void;
10537}
10538
10539export declare function ɵCREATE_ATTRIBUTE_DECORATOR__POST_R3__(): AttributeDecorator;
10540
10541/**
10542 * Create a new `Injector` which is configured using a `defType` of `InjectorType<any>`s.
10543 *
10544 * @publicApi
10545 */
10546export declare function ɵcreateInjector(defType: any, parent?: Injector | null, additionalProviders?: StaticProvider[] | null, name?: string): Injector;
10547
10548export declare function ɵcrt(values: {
10549 styles: (string | any[])[];
10550 encapsulation: ViewEncapsulation;
10551 data: {
10552 [kind: string]: any[];
10553 };
10554}): RendererType2;
10555
10556/**
10557 * A list of CssSelectors.
10558 *
10559 * A directive or component can have multiple selectors. This type is used for
10560 * directive defs so any of the selectors in the list will match that directive.
10561 *
10562 * Original: 'form, [ngForm]'
10563 * Parsed: [['form'], ['', 'ngForm', '']]
10564 */
10565export declare type ɵCssSelectorList = CssSelector[];
10566
10567/**
10568 * Index of each value in currency data (used to describe CURRENCIES_EN in currencies.ts)
10569 */
10570export declare const enum ɵCurrencyIndex {
10571 Symbol = 0,
10572 SymbolNarrow = 1,
10573 NbOfDigits = 2
10574}
10575
10576/**
10577 * The locale id that the application is using by default (for translations and ICU expressions).
10578 */
10579export declare const ɵDEFAULT_LOCALE_ID = "en-US";
10580
10581export declare const ɵdefaultIterableDiffers: IterableDiffers;
10582
10583export declare const ɵdefaultKeyValueDiffers: KeyValueDiffers;
10584
10585/**
10586 * Bitmask for DI flags
10587 */
10588export declare const enum ɵDepFlags {
10589 None = 0,
10590 SkipSelf = 1,
10591 Optional = 2,
10592 Self = 4,
10593 Value = 8
10594}
10595
10596
10597/**
10598 * Synchronously perform change detection on a component (and possibly its sub-components).
10599 *
10600 * This function triggers change detection in a synchronous way on a component.
10601 *
10602 * @param component The component which the change detection should be performed on.
10603 */
10604export declare function ɵdetectChanges(component: {}): void;
10605
10606
10607export declare function ɵdevModeEqual(a: any, b: any): boolean;
10608
10609export declare function ɵdid(checkIndex: number, flags: ɵNodeFlags, matchedQueries: null | [string | number, ɵQueryValueType][], childCount: number, ctor: any, deps: ([ɵDepFlags, any] | any)[], props?: null | {
10610 [name: string]: [number, string];
10611}, outputs?: null | {
10612 [name: string]: string;
10613}): NodeDef;
10614
10615/**
10616 * Runtime link information for Directives.
10617 *
10618 * This is an internal data structure used by the render to link
10619 * directives into templates.
10620 *
10621 * NOTE: Always use `defineDirective` function to create this object,
10622 * never create the object directly since the shape of this object
10623 * can change between versions.
10624 *
10625 * @param Selector type metadata specifying the selector of the directive or component
10626 *
10627 * See: {@link defineDirective}
10628 */
10629export declare interface ɵDirectiveDef<T> {
10630 /**
10631 * A dictionary mapping the inputs' minified property names to their public API names, which
10632 * are their aliases if any, or their original unminified property names
10633 * (as in `@Input('alias') propertyName: any;`).
10634 */
10635 readonly inputs: {
10636 [P in keyof T]: string;
10637 };
10638 /**
10639 * @deprecated This is only here because `NgOnChanges` incorrectly uses declared name instead of
10640 * public or minified name.
10641 */
10642 readonly declaredInputs: {
10643 [P in keyof T]: string;
10644 };
10645 /**
10646 * A dictionary mapping the outputs' minified property names to their public API names, which
10647 * are their aliases if any, or their original unminified property names
10648 * (as in `@Output('alias') propertyName: any;`).
10649 */
10650 readonly outputs: {
10651 [P in keyof T]: string;
10652 };
10653 /**
10654 * Function to create and refresh content queries associated with a given directive.
10655 */
10656 contentQueries: ContentQueriesFunction<T> | null;
10657 /**
10658 * Query-related instructions for a directive. Note that while directives don't have a
10659 * view and as such view queries won't necessarily do anything, there might be
10660 * components that extend the directive.
10661 */
10662 viewQuery: ViewQueriesFunction<T> | null;
10663 /**
10664 * Refreshes host bindings on the associated directive.
10665 */
10666 readonly hostBindings: HostBindingsFunction<T> | null;
10667 /**
10668 * The number of bindings in this directive `hostBindings` (including pure fn bindings).
10669 *
10670 * Used to calculate the length of the component's LView array, so we
10671 * can pre-fill the array and set the host binding start index.
10672 */
10673 readonly hostVars: number;
10674 /**
10675 * Assign static attribute values to a host element.
10676 *
10677 * This property will assign static attribute values as well as class and style
10678 * values to a host element. Since attribute values can consist of different types of values, the
10679 * `hostAttrs` array must include the values in the following format:
10680 *
10681 * attrs = [
10682 * // static attributes (like `title`, `name`, `id`...)
10683 * attr1, value1, attr2, value,
10684 *
10685 * // a single namespace value (like `x:id`)
10686 * NAMESPACE_MARKER, namespaceUri1, name1, value1,
10687 *
10688 * // another single namespace value (like `x:name`)
10689 * NAMESPACE_MARKER, namespaceUri2, name2, value2,
10690 *
10691 * // a series of CSS classes that will be applied to the element (no spaces)
10692 * CLASSES_MARKER, class1, class2, class3,
10693 *
10694 * // a series of CSS styles (property + value) that will be applied to the element
10695 * STYLES_MARKER, prop1, value1, prop2, value2
10696 * ]
10697 *
10698 * All non-class and non-style attributes must be defined at the start of the list
10699 * first before all class and style values are set. When there is a change in value
10700 * type (like when classes and styles are introduced) a marker must be used to separate
10701 * the entries. The marker values themselves are set via entries found in the
10702 * [AttributeMarker] enum.
10703 */
10704 readonly hostAttrs: TAttributes | null;
10705 /** Token representing the directive. Used by DI. */
10706 readonly type: Type<T>;
10707 /** Function that resolves providers and publishes them into the DI system. */
10708 providersResolver: (<U extends T>(def: ɵDirectiveDef<U>, processProvidersFn?: ProcessProvidersFunction) => void) | null;
10709 /** The selectors that will be used to match nodes to this directive. */
10710 readonly selectors: ɵCssSelectorList;
10711 /**
10712 * Name under which the directive is exported (for use with local references in template)
10713 */
10714 readonly exportAs: string[] | null;
10715 /**
10716 * Factory function used to create a new directive instance. Will be null initially.
10717 * Populated when the factory is first requested by directive instantiation logic.
10718 */
10719 readonly factory: FactoryFn<T> | null;
10720 /**
10721 * The features applied to this directive
10722 */
10723 readonly features: DirectiveDefFeature[] | null;
10724 setInput: (<U extends T>(this: ɵDirectiveDef<U>, instance: U, value: any, publicName: string, privateName: string) => void) | null;
10725}
10726
10727/**
10728 * A subclass of `Type` which has a static `ɵdir`:`DirectiveDef` field making it
10729 * consumable for rendering.
10730 */
10731export declare interface ɵDirectiveType<T> extends Type<T> {
10732 ɵdir: unknown;
10733 ɵfac: unknown;
10734}
10735
10736export declare function ɵeld(checkIndex: number, flags: ɵNodeFlags, matchedQueriesDsl: null | [string | number, ɵQueryValueType][], ngContentIndex: null | number, childCount: number, namespaceAndName: string | null, fixedAttrs?: null | [string, string][], bindings?: null | [ɵBindingFlags, string, string | SecurityContext | null][], outputs?: null | ([string, string])[], handleEvent?: null | ElementHandleEventFn, componentView?: null | ViewDefinitionFactory, componentRendererType?: RendererType2 | null): NodeDef;
10737
10738export declare const ɵEMPTY_ARRAY: any[];
10739
10740export declare const ɵEMPTY_MAP: {
10741 [key: string]: any;
10742};
10743
10744/**
10745 * Index of each type of locale data from the extra locale data array
10746 */
10747export declare const enum ɵExtraLocaleDataIndex {
10748 ExtraDayPeriodFormats = 0,
10749 ExtraDayPeriodStandalone = 1,
10750 ExtraDayPeriodsRules = 2
10751}
10752
10753/**
10754 * Finds the locale data for a given locale.
10755 *
10756 * @param locale The locale code.
10757 * @returns The locale data.
10758 * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)
10759 */
10760export declare function ɵfindLocaleData(locale: string): any;
10761
10762/**
10763 * Loops over queued module definitions, if a given module definition has all of its
10764 * declarations resolved, it dequeues that module definition and sets the scope on
10765 * its declarations.
10766 */
10767export declare function ɵflushModuleScopingQueueAsMuchAsPossible(): void;
10768
10769export declare function ɵgetComponentViewDefinitionFactory(componentFactory: ComponentFactory<any>): ViewDefinitionFactory;
10770
10771export declare function ɵgetDebugNode__POST_R3__(nativeNode: Element): DebugElement__POST_R3__;
10772
10773export declare function ɵgetDebugNode__POST_R3__(nativeNode: Node): DebugNode__POST_R3__;
10774
10775export declare function ɵgetDebugNode__POST_R3__(nativeNode: null): null;
10776
10777export declare const ɵgetDebugNodeR2: (nativeNode: any) => DebugNode | null;
10778
10779/**
10780 * Retrieves directive instances associated with a given DOM node. Does not include
10781 * component instances.
10782 *
10783 * @usageNotes
10784 * Given the following DOM structure:
10785 *
10786 * ```html
10787 * <app-root>
10788 * <button my-button></button>
10789 * <my-comp></my-comp>
10790 * </app-root>
10791 * ```
10792 *
10793 * Calling `getDirectives` on `<button>` will return an array with an instance of the `MyButton`
10794 * directive that is associated with the DOM node.
10795 *
10796 * Calling `getDirectives` on `<my-comp>` will return an empty array.
10797 *
10798 * @param node DOM node for which to get the directives.
10799 * @returns Array of directives associated with the node.
10800 *
10801 * @publicApi
10802 * @globalApi ng
10803 */
10804export declare function ɵgetDirectives(node: Node): {}[];
10805
10806/**
10807 * Retrieves the host element of a component or directive instance.
10808 * The host element is the DOM element that matched the selector of the directive.
10809 *
10810 * @param componentOrDirective Component or directive instance for which the host
10811 * element should be retrieved.
10812 * @returns Host element of the target.
10813 *
10814 * @publicApi
10815 * @globalApi ng
10816 */
10817export declare function ɵgetHostElement(componentOrDirective: {}): Element;
10818
10819/**
10820 * Read the injectable def (`ɵprov`) for `type` in a way which is immune to accidentally reading
10821 * inherited value.
10822 *
10823 * @param type A type which may have its own (non-inherited) `ɵprov`.
10824 */
10825export declare function ɵgetInjectableDef<T>(type: any): ɵɵInjectableDeclaration<T> | null;
10826
10827/**
10828 * Returns the matching `LContext` data for a given DOM node, directive or component instance.
10829 *
10830 * This function will examine the provided DOM element, component, or directive instance\'s
10831 * monkey-patched property to derive the `LContext` data. Once called then the monkey-patched
10832 * value will be that of the newly created `LContext`.
10833 *
10834 * If the monkey-patched value is the `LView` instance then the context value for that
10835 * target will be created and the monkey-patch reference will be updated. Therefore when this
10836 * function is called it may mutate the provided element\'s, component\'s or any of the associated
10837 * directive\'s monkey-patch values.
10838 *
10839 * If the monkey-patch value is not detected then the code will walk up the DOM until an element
10840 * is found which contains a monkey-patch reference. When that occurs then the provided element
10841 * will be updated with a new context (which is then returned). If the monkey-patch value is not
10842 * detected for a component/directive instance then it will throw an error (all components and
10843 * directives should be automatically monkey-patched by ivy).
10844 *
10845 * @param target Component, Directive or DOM Node.
10846 */
10847export declare function ɵgetLContext(target: any): ɵLContext | null;
10848
10849/**
10850 * Retrieves the default currency code for the given locale.
10851 *
10852 * The default is defined as the first currency which is still in use.
10853 *
10854 * @param locale The code of the locale whose currency code we want.
10855 * @returns The code of the default currency for the given locale.
10856 *
10857 */
10858export declare function ɵgetLocaleCurrencyCode(locale: string): string | null;
10859
10860/**
10861 * Retrieves the plural function used by ICU expressions to determine the plural case to use
10862 * for a given locale.
10863 * @param locale A locale code for the locale format rules to use.
10864 * @returns The plural function for the locale.
10865 * @see `NgPlural`
10866 * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)
10867 */
10868export declare function ɵgetLocalePluralCase(locale: string): (value: number) => number;
10869
10870export declare function ɵgetModuleFactory__POST_R3__(id: string): NgModuleFactory<any>;
10871
10872export declare function ɵgetSanitizationBypassType(value: any): ɵBypassType | null;
10873
10874export declare type ɵGetterFn = (obj: any) => any;
10875
10876
10877export declare const ɵglobal: any;
10878
10879export declare function ɵinitServicesIfNeeded(): void;
10880
10881export declare function ɵINJECTOR_IMPL__POST_R3__(providers: StaticProvider[], parent: Injector | undefined, name: string): Injector;
10882
10883/**
10884 * An internal token whose presence in an injector indicates that the injector should treat itself
10885 * as a root scoped injector when processing requests for unknown tokens which may indicate
10886 * they are provided in the root scope.
10887 */
10888export declare const ɵINJECTOR_SCOPE: InjectionToken<"root" | "platform" | null>;
10889
10890export declare function ɵinlineInterpolate(valueCount: number, c0: string, a1: any, c1: string, a2?: any, c2?: string, a3?: any, c3?: string, a4?: any, c4?: string, a5?: any, c5?: string, a6?: any, c6?: string, a7?: any, c7?: string, a8?: any, c8?: string, a9?: any, c9?: string): string;
10891
10892export declare function ɵinterpolate(valueCount: number, constAndInterp: string[]): string;
10893
10894export declare function ɵisBoundToModule__POST_R3__<C>(cf: ComponentFactory<C>): boolean;
10895
10896/**
10897 * Reports whether a given strategy is currently the default for change detection.
10898 * @param changeDetectionStrategy The strategy to check.
10899 * @returns True if the given strategy is the current default, false otherwise.
10900 * @see `ChangeDetectorStatus`
10901 * @see `ChangeDetectorRef`
10902 */
10903export declare function ɵisDefaultChangeDetectionStrategy(changeDetectionStrategy: ChangeDetectionStrategy): boolean;
10904
10905export declare function ɵisListLikeIterable(obj: any): boolean;
10906
10907/**
10908 * Determine if the argument is an Observable
10909 *
10910 * Strictly this tests that the `obj` is `Subscribable`, since `Observable`
10911 * types need additional methods, such as `lift()`. But it is adequate for our
10912 * needs since within the Angular framework code we only ever need to use the
10913 * `subscribe()` method, and RxJS has mechanisms to wrap `Subscribable` objects
10914 * into `Observable` as needed.
10915 */
10916export declare const ɵisObservable: (obj: any | Observable<any>) => obj is Observable<any>;
10917
10918/**
10919 * Determine if the argument is shaped like a Promise
10920 */
10921export declare function ɵisPromise<T = any>(obj: any): obj is Promise<T>;
10922
10923/**
10924 * Determine if the argument is a Subscribable
10925 */
10926export declare function ɵisSubscribable(obj: any | Subscribable<any>): obj is Subscribable<any>;
10927
10928export declare const ɵivyEnabled = false;
10929
10930/**
10931 * The internal view context which is specific to a given DOM element, directive or
10932 * component instance. Each value in here (besides the LView and element node details)
10933 * can be present, null or undefined. If undefined then it implies the value has not been
10934 * looked up yet, otherwise, if null, then a lookup was executed and nothing was found.
10935 *
10936 * Each value will get filled when the respective value is examined within the getContext
10937 * function. The component, element and each directive instance will share the same instance
10938 * of the context.
10939 */
10940export declare interface ɵLContext {
10941 /**
10942 * The component's parent view data.
10943 */
10944 lView: ɵangular_packages_core_core_ca;
10945 /**
10946 * The index instance of the node.
10947 */
10948 nodeIndex: number;
10949 /**
10950 * The instance of the DOM node that is attached to the lNode.
10951 */
10952 native: RNode;
10953 /**
10954 * The instance of the Component node.
10955 */
10956 component: {} | null | undefined;
10957 /**
10958 * The list of active directives that exist on this element.
10959 */
10960 directives: any[] | null | undefined;
10961 /**
10962 * The map of local references (local reference name => element or directive instance) that exist
10963 * on this element.
10964 */
10965 localRefs: {
10966 [key: string]: any;
10967 } | null | undefined;
10968}
10969
10970/**
10971 * Used to enable lifecycle hooks on the root component.
10972 *
10973 * Include this feature when calling `renderComponent` if the root component
10974 * you are rendering has lifecycle hooks defined. Otherwise, the hooks won't
10975 * be called properly.
10976 *
10977 * Example:
10978 *
10979 * ```
10980 * renderComponent(AppComponent, {hostFeatures: [LifecycleHooksFeature]});
10981 * ```
10982 */
10983export declare function ɵLifecycleHooksFeature(component: any, def: ɵComponentDef<any>): void;
10984
10985/**
10986 * Index of each type of locale data from the locale data array
10987 */
10988export declare enum ɵLocaleDataIndex {
10989 LocaleId = 0,
10990 DayPeriodsFormat = 1,
10991 DayPeriodsStandalone = 2,
10992 DaysFormat = 3,
10993 DaysStandalone = 4,
10994 MonthsFormat = 5,
10995 MonthsStandalone = 6,
10996 Eras = 7,
10997 FirstDayOfWeek = 8,
10998 WeekendRange = 9,
10999 DateFormat = 10,
11000 TimeFormat = 11,
11001 DateTimeFormat = 12,
11002 NumberSymbols = 13,
11003 NumberFormats = 14,
11004 CurrencyCode = 15,
11005 CurrencySymbol = 16,
11006 CurrencyName = 17,
11007 Currencies = 18,
11008 Directionality = 19,
11009 PluralCase = 20,
11010 ExtraData = 21
11011}
11012
11013/**
11014 * @suppress {globalThis}
11015 */
11016export declare function ɵmakeDecorator<T>(name: string, props?: (...args: any[]) => any, parentClass?: any, additionalProcessing?: (type: Type<T>) => void, typeFn?: (type: Type<T>, ...args: any[]) => void): {
11017 new (...args: any[]): any;
11018 (...args: any[]): any;
11019 (...args: any[]): (cls: any) => any;
11020};
11021
11022/**
11023 * Marks the component as dirty (needing change detection). Marking a component dirty will
11024 * schedule a change detection on it at some point in the future.
11025 *
11026 * Marking an already dirty component as dirty won't do anything. Only one outstanding change
11027 * detection can be scheduled per component tree.
11028 *
11029 * @param component Component to mark as dirty.
11030 */
11031export declare function ɵmarkDirty(component: {}): void;
11032
11033export declare type ɵMethodFn = (obj: any, args: any[]) => any;
11034
11035export declare function ɵmod(providers: NgModuleProviderDef[]): NgModuleDefinition;
11036
11037export declare function ɵmpd(flags: ɵNodeFlags, token: any, value: any, deps: ([ɵDepFlags, any] | any)[]): NgModuleProviderDef;
11038
11039export declare function ɵncd(ngContentIndex: null | number, index: number): NodeDef;
11040
11041
11042export declare const ɵNG_COMP_DEF: string;
11043
11044export declare const ɵNG_DIR_DEF: string;
11045
11046/**
11047 * If a directive is diPublic, bloomAdd sets a property on the type with this constant as
11048 * the key and the directive's unique ID as the value. This allows us to map directives to their
11049 * bloom filter bit for DI.
11050 */
11051export declare const ɵNG_ELEMENT_ID: string;
11052
11053export declare const ɵNG_INJ_DEF: string;
11054
11055export declare const ɵNG_MOD_DEF: string;
11056
11057export declare const ɵNG_PIPE_DEF: string;
11058
11059export declare const ɵNG_PROV_DEF: string;
11060
11061/**
11062 * Runtime link information for NgModules.
11063 *
11064 * This is the internal data structure used by the runtime to assemble components, directives,
11065 * pipes, and injectors.
11066 *
11067 * NOTE: Always use `ɵɵdefineNgModule` function to create this object,
11068 * never create the object directly since the shape of this object
11069 * can change between versions.
11070 */
11071export declare interface ɵNgModuleDef<T> {
11072 /** Token representing the module. Used by DI. */
11073 type: T;
11074 /** List of components to bootstrap. */
11075 bootstrap: Type<any>[] | (() => Type<any>[]);
11076 /** List of components, directives, and pipes declared by this module. */
11077 declarations: Type<any>[] | (() => Type<any>[]);
11078 /** List of modules or `ModuleWithProviders` imported by this module. */
11079 imports: Type<any>[] | (() => Type<any>[]);
11080 /**
11081 * List of modules, `ModuleWithProviders`, components, directives, or pipes exported by this
11082 * module.
11083 */
11084 exports: Type<any>[] | (() => Type<any>[]);
11085 /**
11086 * Cached value of computed `transitiveCompileScopes` for this module.
11087 *
11088 * This should never be read directly, but accessed via `transitiveScopesFor`.
11089 */
11090 transitiveCompileScopes: ɵNgModuleTransitiveScopes | null;
11091 /** The set of schemas that declare elements to be allowed in the NgModule. */
11092 schemas: SchemaMetadata[] | null;
11093 /** Unique ID for the module with which it should be registered. */
11094 id: string | null;
11095}
11096
11097export declare class ɵNgModuleFactory<T> extends NgModuleFactory<T> {
11098 moduleType: Type<T>;
11099 constructor(moduleType: Type<T>);
11100 create(parentInjector: Injector | null): NgModuleRef<T>;
11101}
11102
11103/**
11104 * Represents the expansion of an `NgModule` into its scopes.
11105 *
11106 * A scope is a set of directives and pipes that are visible in a particular context. Each
11107 * `NgModule` has two scopes. The `compilation` scope is the set of directives and pipes that will
11108 * be recognized in the templates of components declared by the module. The `exported` scope is the
11109 * set of directives and pipes exported by a module (that is, module B's exported scope gets added
11110 * to module A's compilation scope when module A imports B).
11111 */
11112export declare interface ɵNgModuleTransitiveScopes {
11113 compilation: {
11114 directives: Set<any>;
11115 pipes: Set<any>;
11116 };
11117 exported: {
11118 directives: Set<any>;
11119 pipes: Set<any>;
11120 };
11121 schemas: SchemaMetadata[] | null;
11122}
11123
11124export declare interface ɵNgModuleType<T = any> extends Type<T> {
11125 ɵmod: ɵNgModuleDef<T>;
11126}
11127
11128
11129export declare interface ɵNO_CHANGE {
11130 __brand__: 'NO_CHANGE';
11131}
11132
11133/** A special value which designates that a value has not changed. */
11134export declare const ɵNO_CHANGE: ɵNO_CHANGE;
11135
11136/**
11137 * Bitmask for NodeDef.flags.
11138 * Naming convention:
11139 * - `Type...`: flags that are mutually exclusive
11140 * - `Cat...`: union of multiple `Type...` (short for category).
11141 */
11142export declare const enum ɵNodeFlags {
11143 None = 0,
11144 TypeElement = 1,
11145 TypeText = 2,
11146 ProjectedTemplate = 4,
11147 CatRenderNode = 3,
11148 TypeNgContent = 8,
11149 TypePipe = 16,
11150 TypePureArray = 32,
11151 TypePureObject = 64,
11152 TypePurePipe = 128,
11153 CatPureExpression = 224,
11154 TypeValueProvider = 256,
11155 TypeClassProvider = 512,
11156 TypeFactoryProvider = 1024,
11157 TypeUseExistingProvider = 2048,
11158 LazyProvider = 4096,
11159 PrivateProvider = 8192,
11160 TypeDirective = 16384,
11161 Component = 32768,
11162 CatProviderNoDirective = 3840,
11163 CatProvider = 20224,
11164 OnInit = 65536,
11165 OnDestroy = 131072,
11166 DoCheck = 262144,
11167 OnChanges = 524288,
11168 AfterContentInit = 1048576,
11169 AfterContentChecked = 2097152,
11170 AfterViewInit = 4194304,
11171 AfterViewChecked = 8388608,
11172 EmbeddedViews = 16777216,
11173 ComponentView = 33554432,
11174 TypeContentQuery = 67108864,
11175 TypeViewQuery = 134217728,
11176 StaticQuery = 268435456,
11177 DynamicQuery = 536870912,
11178 TypeNgModule = 1073741824,
11179 EmitDistinctChangesOnly = -2147483648,
11180 CatQuery = 201326592,
11181 Types = 201347067
11182}
11183
11184/**
11185 * Provides a noop implementation of `NgZone` which does nothing. This zone requires explicit calls
11186 * to framework to perform rendering.
11187 */
11188export declare class ɵNoopNgZone implements NgZone {
11189 readonly hasPendingMicrotasks: boolean;
11190 readonly hasPendingMacrotasks: boolean;
11191 readonly isStable: boolean;
11192 readonly onUnstable: EventEmitter<any>;
11193 readonly onMicrotaskEmpty: EventEmitter<any>;
11194 readonly onStable: EventEmitter<any>;
11195 readonly onError: EventEmitter<any>;
11196 run<T>(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any): T;
11197 runGuarded<T>(fn: (...args: any[]) => any, applyThis?: any, applyArgs?: any): T;
11198 runOutsideAngular<T>(fn: (...args: any[]) => T): T;
11199 runTask<T>(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any, name?: string): T;
11200}
11201
11202
11203/**
11204 * Convince closure compiler that the wrapped function has no side-effects.
11205 *
11206 * Closure compiler always assumes that `toString` has no side-effects. We use this quirk to
11207 * allow us to execute a function but have closure compiler mark the call as no-side-effects.
11208 * It is important that the return value for the `noSideEffects` function be assigned
11209 * to something which is retained otherwise the call to `noSideEffects` will be removed by closure
11210 * compiler.
11211 */
11212export declare function ɵnoSideEffects<T>(fn: () => T): T;
11213
11214export declare const ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR: {};
11215
11216export declare function ɵnov(view: ViewData, index: number): any;
11217
11218export declare function ɵoverrideComponentView(comp: Type<any>, componentFactory: ComponentFactory<any>): void;
11219
11220export declare function ɵoverrideProvider(override: ProviderOverride): void;
11221
11222export declare function ɵpad(checkIndex: number, argCount: number): NodeDef;
11223
11224/**
11225 * Patch the definition of a component with directives and pipes from the compilation scope of
11226 * a given module.
11227 */
11228export declare function ɵpatchComponentDefWithScope<C>(componentDef: ɵComponentDef<C>, transitiveScopes: ɵNgModuleTransitiveScopes): void;
11229
11230export declare function ɵpid(flags: ɵNodeFlags, ctor: any, deps: ([ɵDepFlags, any] | any)[]): NodeDef;
11231
11232/**
11233 * Runtime link information for Pipes.
11234 *
11235 * This is an internal data structure used by the renderer to link
11236 * pipes into templates.
11237 *
11238 * NOTE: Always use `definePipe` function to create this object,
11239 * never create the object directly since the shape of this object
11240 * can change between versions.
11241 *
11242 * See: {@link definePipe}
11243 */
11244export declare interface ɵPipeDef<T> {
11245 /** Token representing the pipe. */
11246 type: Type<T>;
11247 /**
11248 * Pipe name.
11249 *
11250 * Used to resolve pipe in templates.
11251 */
11252 readonly name: string;
11253 /**
11254 * Factory function used to create a new pipe instance. Will be null initially.
11255 * Populated when the factory is first requested by pipe instantiation logic.
11256 */
11257 factory: FactoryFn<T> | null;
11258 /**
11259 * Whether or not the pipe is pure.
11260 *
11261 * Pure pipes result only depends on the pipe input and not on internal
11262 * state of the pipe.
11263 */
11264 readonly pure: boolean;
11265 onDestroy: (() => void) | null;
11266}
11267
11268
11269/**
11270 * A shared interface which contains an animation player
11271 */
11272export declare interface ɵPlayer {
11273 parent?: ɵPlayer | null;
11274 state: ɵPlayState;
11275 play(): void;
11276 pause(): void;
11277 finish(): void;
11278 destroy(): void;
11279 addEventListener(state: ɵPlayState | string, cb: (data?: any) => any): void;
11280}
11281
11282/**
11283 * Used as a reference to build a player from a styling template binding
11284 * (`[style]` and `[class]`).
11285 *
11286 * The `fn` function will be called once any styling-related changes are
11287 * evaluated on an element and is expected to return a player that will
11288 * be then run on the element.
11289 *
11290 * `[style]`, `[style.prop]`, `[class]` and `[class.name]` template bindings
11291 * all accept a `PlayerFactory` as input and this player factories.
11292 */
11293export declare interface ɵPlayerFactory {
11294 '__brand__': 'Brand for PlayerFactory that nothing will match';
11295}
11296
11297/**
11298 * Designed to be used as an injection service to capture all animation players.
11299 *
11300 * When present all animation players will be passed into the flush method below.
11301 * This feature is designed to service application-wide animation testing, live
11302 * debugging as well as custom animation choreographing tools.
11303 */
11304export declare interface ɵPlayerHandler {
11305 /**
11306 * Designed to kick off the player at the end of change detection
11307 */
11308 flushPlayers(): void;
11309 /**
11310 * @param player The player that has been scheduled to run within the application.
11311 * @param context The context as to where the player was bound to
11312 */
11313 queuePlayer(player: ɵPlayer, context: ComponentInstance | DirectiveInstance | HTMLElement): void;
11314}
11315
11316/**
11317 * The state of a given player
11318 *
11319 * Do not change the increasing nature of the numbers since the player
11320 * code may compare state by checking if a number is higher or lower than
11321 * a certain numeric value.
11322 */
11323export declare const enum ɵPlayState {
11324 Pending = 0,
11325 Running = 1,
11326 Paused = 2,
11327 Finished = 100,
11328 Destroyed = 200
11329}
11330
11331export declare function ɵpod(checkIndex: number, propToIndex: {
11332 [p: string]: number;
11333}): NodeDef;
11334
11335export declare function ɵppd(checkIndex: number, argCount: number): NodeDef;
11336
11337export declare function ɵprd(flags: ɵNodeFlags, matchedQueries: null | [string | number, ɵQueryValueType][], token: any, value: any, deps: ([ɵDepFlags, any] | any)[]): NodeDef;
11338
11339/**
11340 * Profiler function which the runtime will invoke before and after user code.
11341 */
11342export declare interface ɵProfiler {
11343 (event: ɵProfilerEvent, instance: {} | null, hookOrListener?: (e?: any) => any): void;
11344}
11345
11346
11347/**
11348 * Profiler events is an enum used by the profiler to distinguish between different calls of user
11349 * code invoked throughout the application lifecycle.
11350 */
11351export declare const enum ɵProfilerEvent {
11352 /**
11353 * Corresponds to the point in time before the runtime has called the template function of a
11354 * component with `RenderFlags.Create`.
11355 */
11356 TemplateCreateStart = 0,
11357 /**
11358 * Corresponds to the point in time after the runtime has called the template function of a
11359 * component with `RenderFlags.Create`.
11360 */
11361 TemplateCreateEnd = 1,
11362 /**
11363 * Corresponds to the point in time before the runtime has called the template function of a
11364 * component with `RenderFlags.Update`.
11365 */
11366 TemplateUpdateStart = 2,
11367 /**
11368 * Corresponds to the point in time after the runtime has called the template function of a
11369 * component with `RenderFlags.Update`.
11370 */
11371 TemplateUpdateEnd = 3,
11372 /**
11373 * Corresponds to the point in time before the runtime has called a lifecycle hook of a component
11374 * or directive.
11375 */
11376 LifecycleHookStart = 4,
11377 /**
11378 * Corresponds to the point in time after the runtime has called a lifecycle hook of a component
11379 * or directive.
11380 */
11381 LifecycleHookEnd = 5,
11382 /**
11383 * Corresponds to the point in time before the runtime has evaluated an expression associated with
11384 * an event or an output.
11385 */
11386 OutputStart = 6,
11387 /**
11388 * Corresponds to the point in time after the runtime has evaluated an expression associated with
11389 * an event or an output.
11390 */
11391 OutputEnd = 7
11392}
11393
11394/**
11395 * Publishes a collection of default debug tools onto`window.ng`.
11396 *
11397 * These functions are available globally when Angular is in development
11398 * mode and are automatically stripped away from prod mode is on.
11399 */
11400export declare function ɵpublishDefaultGlobalUtils(): void;
11401
11402/**
11403 * Publishes the given function to `window.ng` so that it can be
11404 * used from the browser console when an application is not in production.
11405 */
11406export declare function ɵpublishGlobalUtil(name: string, fn: Function): void;
11407
11408export declare function ɵqud(flags: ɵNodeFlags, id: number, bindings: {
11409 [propName: string]: ɵQueryBindingType;
11410}): NodeDef;
11411
11412export declare const enum ɵQueryBindingType {
11413 First = 0,
11414 All = 1
11415}
11416
11417export declare const enum ɵQueryValueType {
11418 ElementRef = 0,
11419 RenderElement = 1,
11420 TemplateRef = 2,
11421 ViewContainerRef = 3,
11422 Provider = 4
11423}
11424
11425export declare class ɵReflectionCapabilities implements PlatformReflectionCapabilities {
11426 private _reflect;
11427 constructor(reflect?: any);
11428 isReflectionEnabled(): boolean;
11429 factory<T>(t: Type<T>): (args: any[]) => T;
11430 private _ownParameters;
11431 parameters(type: Type<any>): any[][];
11432 private _ownAnnotations;
11433 annotations(typeOrFunc: Type<any>): any[];
11434 private _ownPropMetadata;
11435 propMetadata(typeOrFunc: any): {
11436 [key: string]: any[];
11437 };
11438 ownPropMetadata(typeOrFunc: any): {
11439 [key: string]: any[];
11440 };
11441 hasLifecycleHook(type: any, lcProperty: string): boolean;
11442 guards(type: any): {
11443 [key: string]: any;
11444 };
11445 getter(name: string): ɵGetterFn;
11446 setter(name: string): ɵSetterFn;
11447 method(name: string): ɵMethodFn;
11448 importUri(type: any): string;
11449 resourceUri(type: any): string;
11450 resolveIdentifier(name: string, moduleUrl: string, members: string[], runtime: any): any;
11451 resolveEnum(enumIdentifier: any, name: string): any;
11452}
11453
11454/**
11455 * Register locale data to be used internally by Angular. See the
11456 * ["I18n guide"](guide/i18n-common-format-data-locale) to know how to import additional locale
11457 * data.
11458 *
11459 * The signature `registerLocaleData(data: any, extraData?: any)` is deprecated since v5.1
11460 */
11461export declare function ɵregisterLocaleData(data: any, localeId?: string | any, extraData?: any): void;
11462
11463/**
11464 * Registers a loaded module. Should only be called from generated NgModuleFactory code.
11465 * @publicApi
11466 */
11467export declare function ɵregisterModuleFactory(id: string, factory: NgModuleFactory<any>): void;
11468
11469export declare function ɵregisterNgModuleType(ngModuleType: ɵNgModuleType): void;
11470
11471/**
11472 * Render3 implementation of {@link viewEngine_ComponentFactory}.
11473 */
11474export declare class ɵRender3ComponentFactory<T> extends ComponentFactory<T> {
11475 private componentDef;
11476 private ngModule?;
11477 selector: string;
11478 componentType: Type<any>;
11479 ngContentSelectors: string[];
11480 isBoundToModule: boolean;
11481 get inputs(): {
11482 propName: string;
11483 templateName: string;
11484 }[];
11485 get outputs(): {
11486 propName: string;
11487 templateName: string;
11488 }[];
11489 /**
11490 * @param componentDef The component definition.
11491 * @param ngModule The NgModuleRef to which the factory is bound.
11492 */
11493 constructor(componentDef: ɵComponentDef<any>, ngModule?: NgModuleRef<any> | undefined);
11494 create(injector: Injector, projectableNodes?: any[][] | undefined, rootSelectorOrNode?: any, ngModule?: NgModuleRef<any> | undefined): ComponentRef<T>;
11495}
11496
11497/**
11498 * Represents an instance of a Component created via a {@link ComponentFactory}.
11499 *
11500 * `ComponentRef` provides access to the Component Instance as well other objects related to this
11501 * Component Instance and allows you to destroy the Component Instance via the {@link #destroy}
11502 * method.
11503 *
11504 */
11505export declare class ɵRender3ComponentRef<T> extends ComponentRef<T> {
11506 location: ElementRef;
11507 private _rootLView;
11508 private _tNode;
11509 instance: T;
11510 hostView: ViewRef_2<T>;
11511 changeDetectorRef: ChangeDetectorRef;
11512 componentType: Type<T>;
11513 constructor(componentType: Type<T>, instance: T, location: ElementRef, _rootLView: ɵangular_packages_core_core_ca, _tNode: ɵangular_packages_core_core_bk | TContainerNode | TElementContainerNode);
11514 get injector(): Injector;
11515 destroy(): void;
11516 onDestroy(callback: () => void): void;
11517}
11518
11519export declare class ɵRender3NgModuleRef<T> extends NgModuleRef<T> implements InternalNgModuleRef<T> {
11520 _parent: Injector | null;
11521 _bootstrapComponents: Type<any>[];
11522 _r3Injector: R3Injector;
11523 injector: Injector;
11524 instance: T;
11525 destroyCbs: (() => void)[] | null;
11526 readonly componentFactoryResolver: ComponentFactoryResolver_2;
11527 constructor(ngModuleType: Type<T>, _parent: Injector | null);
11528 get(token: any, notFoundValue?: any, injectFlags?: InjectFlags): any;
11529 destroy(): void;
11530 onDestroy(callback: () => void): void;
11531}
11532
11533/**
11534 * Bootstraps a Component into an existing host element and returns an instance
11535 * of the component.
11536 *
11537 * Use this function to bootstrap a component into the DOM tree. Each invocation
11538 * of this function will create a separate tree of components, injectors and
11539 * change detection cycles and lifetimes. To dynamically insert a new component
11540 * into an existing tree such that it shares the same injection, change detection
11541 * and object lifetime, use {@link ViewContainer#createComponent}.
11542 *
11543 * @param componentType Component to bootstrap
11544 * @param options Optional parameters which control bootstrapping
11545 */
11546export declare function ɵrenderComponent<T>(componentType: ɵComponentType<T> | Type<T>, opts?: CreateComponentOptions): T;
11547
11548/**
11549 * Flags passed into template functions to determine which blocks (i.e. creation, update)
11550 * should be executed.
11551 *
11552 * Typically, a template runs both the creation block and the update block on initialization and
11553 * subsequent runs only execute the update block. However, dynamically created views require that
11554 * the creation block be executed separately from the update block (for backwards compat).
11555 */
11556export declare const enum ɵRenderFlags {
11557 Create = 1,
11558 Update = 2
11559}
11560
11561export declare function ɵresetCompiledComponents(): void;
11562
11563export declare function ɵresetJitOptions(): void;
11564
11565/**
11566 * Used to resolve resource URLs on `@Component` when used with JIT compilation.
11567 *
11568 * Example:
11569 * ```
11570 * @Component({
11571 * selector: 'my-comp',
11572 * templateUrl: 'my-comp.html', // This requires asynchronous resolution
11573 * })
11574 * class MyComponent{
11575 * }
11576 *
11577 * // Calling `renderComponent` will fail because `renderComponent` is a synchronous process
11578 * // and `MyComponent`'s `@Component.templateUrl` needs to be resolved asynchronously.
11579 *
11580 * // Calling `resolveComponentResources()` will resolve `@Component.templateUrl` into
11581 * // `@Component.template`, which allows `renderComponent` to proceed in a synchronous manner.
11582 *
11583 * // Use browser's `fetch()` function as the default resource resolution strategy.
11584 * resolveComponentResources(fetch).then(() => {
11585 * // After resolution all URLs have been converted into `template` strings.
11586 * renderComponent(MyComponent);
11587 * });
11588 *
11589 * ```
11590 *
11591 * NOTE: In AOT the resolution happens during compilation, and so there should be no need
11592 * to call this method outside JIT mode.
11593 *
11594 * @param resourceResolver a function which is responsible for returning a `Promise` to the
11595 * contents of the resolved URL. Browser's `fetch()` method is a good default implementation.
11596 */
11597export declare function ɵresolveComponentResources(resourceResolver: (url: string) => (Promise<string | {
11598 text(): Promise<string>;
11599}>)): Promise<void>;
11600
11601export declare class ɵRuntimeError extends Error {
11602 code: ɵRuntimeErrorCode;
11603 constructor(code: ɵRuntimeErrorCode, message: string);
11604}
11605
11606
11607export declare const enum ɵRuntimeErrorCode {
11608 EXPRESSION_CHANGED_AFTER_CHECKED = "100",
11609 CYCLIC_DI_DEPENDENCY = "200",
11610 PROVIDER_NOT_FOUND = "201",
11611 MULTIPLE_COMPONENTS_MATCH = "300",
11612 EXPORT_NOT_FOUND = "301",
11613 PIPE_NOT_FOUND = "302",
11614 UNKNOWN_BINDING = "303",
11615 UNKNOWN_ELEMENT = "304",
11616 TEMPLATE_STRUCTURE_ERROR = "305"
11617}
11618
11619/**
11620 * Marker interface for a value that's safe to use as HTML.
11621 *
11622 * @publicApi
11623 */
11624export declare interface ɵSafeHtml extends ɵSafeValue {
11625}
11626
11627/**
11628 * Marker interface for a value that's safe to use as a URL to load executable code from.
11629 *
11630 * @publicApi
11631 */
11632export declare interface ɵSafeResourceUrl extends ɵSafeValue {
11633}
11634
11635/**
11636 * Marker interface for a value that's safe to use as JavaScript.
11637 *
11638 * @publicApi
11639 */
11640export declare interface ɵSafeScript extends ɵSafeValue {
11641}
11642
11643/**
11644 * Marker interface for a value that's safe to use as style (CSS).
11645 *
11646 * @publicApi
11647 */
11648export declare interface ɵSafeStyle extends ɵSafeValue {
11649}
11650
11651/**
11652 * Marker interface for a value that's safe to use as a URL linking to a document.
11653 *
11654 * @publicApi
11655 */
11656export declare interface ɵSafeUrl extends ɵSafeValue {
11657}
11658
11659/**
11660 * Marker interface for a value that's safe to use in a particular context.
11661 *
11662 * @publicApi
11663 */
11664export declare interface ɵSafeValue {
11665}
11666
11667/**
11668 * Adds decorator, constructor, and property metadata to a given type via static metadata fields
11669 * on the type.
11670 *
11671 * These metadata fields can later be read with Angular's `ReflectionCapabilities` API.
11672 *
11673 * Calls to `setClassMetadata` can be guarded by ngDevMode, resulting in the metadata assignments
11674 * being tree-shaken away during production builds.
11675 */
11676export declare function ɵsetClassMetadata(type: Type<any>, decorators: any[] | null, ctorParameters: (() => any[]) | null, propDecorators: {
11677 [field: string]: any;
11678} | null): void;
11679
11680export declare function ɵsetCurrentInjector(injector: Injector | null | undefined): Injector | undefined | null;
11681
11682
11683/**
11684 * Tell ivy what the `document` is for this platform.
11685 *
11686 * It is only necessary to call this if the current platform is not a browser.
11687 *
11688 * @param document The object representing the global `document` in this environment.
11689 */
11690export declare function ɵsetDocument(document: Document | undefined): void;
11691
11692
11693/**
11694 * Sets the locale id that will be used for translations and ICU expressions.
11695 * This is the ivy version of `LOCALE_ID` that was defined as an injection token for the view engine
11696 * but is now defined as a global value.
11697 *
11698 * @param localeId
11699 */
11700export declare function ɵsetLocaleId(localeId: string): void;
11701
11702
11703export declare type ɵSetterFn = (obj: any, value: any) => void;
11704
11705/** Store a value in the `data` at a given `index`. */
11706export declare function ɵstore<T>(tView: TView, lView: ɵangular_packages_core_core_ca, index: number, value: T): void;
11707
11708
11709export declare function ɵstringify(token: any): string;
11710
11711export declare const ɵSWITCH_CHANGE_DETECTOR_REF_FACTORY__POST_R3__: typeof ɵangular_packages_core_core_r;
11712
11713export declare const ɵSWITCH_COMPILE_COMPONENT__POST_R3__: typeof ɵcompileComponent;
11714
11715export declare const ɵSWITCH_COMPILE_DIRECTIVE__POST_R3__: typeof ɵcompileDirective;
11716
11717export declare const ɵSWITCH_COMPILE_INJECTABLE__POST_R3__: typeof compileInjectable;
11718
11719export declare const ɵSWITCH_COMPILE_NGMODULE__POST_R3__: typeof ɵcompileNgModule;
11720
11721export declare const ɵSWITCH_COMPILE_PIPE__POST_R3__: typeof ɵcompilePipe;
11722
11723export declare const ɵSWITCH_ELEMENT_REF_FACTORY__POST_R3__: typeof ɵangular_packages_core_core_i;
11724
11725
11726export declare const ɵSWITCH_IVY_ENABLED__POST_R3__ = true;
11727
11728export declare const ɵSWITCH_RENDERER2_FACTORY__POST_R3__: typeof ɵangular_packages_core_core_h;
11729
11730export declare const ɵSWITCH_TEMPLATE_REF_FACTORY__POST_R3__: typeof ɵangular_packages_core_core_l;
11731
11732export declare const ɵSWITCH_VIEW_CONTAINER_REF_FACTORY__POST_R3__: typeof ɵangular_packages_core_core_n;
11733
11734export declare function ɵted(checkIndex: number, ngContentIndex: number | null, staticText: string[]): NodeDef;
11735
11736/**
11737 * Compute the pair of transitive scopes (compilation scope and exported scope) for a given module.
11738 *
11739 * This operation is memoized and the result is cached on the module's definition. This function can
11740 * be called on modules with components that have not fully compiled yet, but the result should not
11741 * be used until they have.
11742 *
11743 * @param moduleType module that transitive scope should be calculated for.
11744 */
11745export declare function ɵtransitiveScopesFor<T>(moduleType: Type<T>): ɵNgModuleTransitiveScopes;
11746
11747/**
11748 * Helper function to remove all the locale data from `LOCALE_DATA`.
11749 */
11750export declare function ɵunregisterLocaleData(): void;
11751
11752export declare function ɵunv(view: ViewData, nodeIdx: number, bindingIdx: number, value: any): any;
11753
11754export declare function ɵunwrapSafeValue(value: ɵSafeValue): string;
11755
11756export declare function ɵunwrapSafeValue<T>(value: T): T;
11757
11758export declare function ɵvid(flags: ɵViewFlags, nodes: NodeDef[], updateDirectives?: null | ViewUpdateFn, updateRenderer?: null | ViewUpdateFn): ɵViewDefinition;
11759
11760export declare interface ɵViewDefinition extends Definition<ViewDefinitionFactory> {
11761 flags: ɵViewFlags;
11762 updateDirectives: ViewUpdateFn;
11763 updateRenderer: ViewUpdateFn;
11764 handleEvent: ViewHandleEventFn;
11765 /**
11766 * Order: Depth first.
11767 * Especially providers are before elements / anchors.
11768 */
11769 nodes: NodeDef[];
11770 /** aggregated NodeFlags for all nodes **/
11771 nodeFlags: ɵNodeFlags;
11772 rootNodeFlags: ɵNodeFlags;
11773 lastRenderRootNode: NodeDef | null;
11774 bindingCount: number;
11775 outputCount: number;
11776 /**
11777 * Binary or of all query ids that are matched by one of the nodes.
11778 * This includes query ids from templates as well.
11779 * Used as a bloom filter.
11780 */
11781 nodeMatchedQueries: number;
11782}
11783
11784/**
11785 * Bitmask for ViewDefinition.flags.
11786 */
11787export declare const enum ɵViewFlags {
11788 None = 0,
11789 OnPush = 2
11790}
11791
11792/**
11793 * Wait on component until it is rendered.
11794 *
11795 * This function returns a `Promise` which is resolved when the component's
11796 * change detection is executed. This is determined by finding the scheduler
11797 * associated with the `component`'s render tree and waiting until the scheduler
11798 * flushes. If nothing is scheduled, the function returns a resolved promise.
11799 *
11800 * Example:
11801 * ```
11802 * await whenRendered(myComponent);
11803 * ```
11804 *
11805 * @param component Component to wait upon
11806 * @returns Promise which resolves when the component is rendered.
11807 */
11808export declare function ɵwhenRendered(component: any): Promise<null>;
11809
11810/**
11811 * Advances to an element for later binding instructions.
11812 *
11813 * Used in conjunction with instructions like {@link property} to act on elements with specified
11814 * indices, for example those created with {@link element} or {@link elementStart}.
11815 *
11816 * ```ts
11817 * (rf: RenderFlags, ctx: any) => {
11818 * if (rf & 1) {
11819 * text(0, 'Hello');
11820 * text(1, 'Goodbye')
11821 * element(2, 'div');
11822 * }
11823 * if (rf & 2) {
11824 * advance(2); // Advance twice to the <div>.
11825 * property('title', 'test');
11826 * }
11827 * }
11828 * ```
11829 * @param delta Number of elements to advance forwards by.
11830 *
11831 * @codeGenApi
11832 */
11833export declare function ɵɵadvance(delta: number): void;
11834
11835/**
11836 * Updates the value of or removes a bound attribute on an Element.
11837 *
11838 * Used in the case of `[attr.title]="value"`
11839 *
11840 * @param name name The name of the attribute.
11841 * @param value value The attribute is removed when value is `null` or `undefined`.
11842 * Otherwise the attribute value is set to the stringified value.
11843 * @param sanitizer An optional function used to sanitize the value.
11844 * @param namespace Optional namespace to use when setting the attribute.
11845 *
11846 * @codeGenApi
11847 */
11848export declare function ɵɵattribute(name: string, value: any, sanitizer?: SanitizerFn | null, namespace?: string): typeof ɵɵattribute;
11849
11850/**
11851 *
11852 * Update an interpolated attribute on an element with single bound value surrounded by text.
11853 *
11854 * Used when the value passed to a property has 1 interpolated value in it:
11855 *
11856 * ```html
11857 * <div attr.title="prefix{{v0}}suffix"></div>
11858 * ```
11859 *
11860 * Its compiled representation is::
11861 *
11862 * ```ts
11863 * ɵɵattributeInterpolate1('title', 'prefix', v0, 'suffix');
11864 * ```
11865 *
11866 * @param attrName The name of the attribute to update
11867 * @param prefix Static value used for concatenation only.
11868 * @param v0 Value checked for change.
11869 * @param suffix Static value used for concatenation only.
11870 * @param sanitizer An optional sanitizer function
11871 * @returns itself, so that it may be chained.
11872 * @codeGenApi
11873 */
11874export declare function ɵɵattributeInterpolate1(attrName: string, prefix: string, v0: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate1;
11875
11876/**
11877 *
11878 * Update an interpolated attribute on an element with 2 bound values surrounded by text.
11879 *
11880 * Used when the value passed to a property has 2 interpolated values in it:
11881 *
11882 * ```html
11883 * <div attr.title="prefix{{v0}}-{{v1}}suffix"></div>
11884 * ```
11885 *
11886 * Its compiled representation is::
11887 *
11888 * ```ts
11889 * ɵɵattributeInterpolate2('title', 'prefix', v0, '-', v1, 'suffix');
11890 * ```
11891 *
11892 * @param attrName The name of the attribute to update
11893 * @param prefix Static value used for concatenation only.
11894 * @param v0 Value checked for change.
11895 * @param i0 Static value used for concatenation only.
11896 * @param v1 Value checked for change.
11897 * @param suffix Static value used for concatenation only.
11898 * @param sanitizer An optional sanitizer function
11899 * @returns itself, so that it may be chained.
11900 * @codeGenApi
11901 */
11902export declare function ɵɵattributeInterpolate2(attrName: string, prefix: string, v0: any, i0: string, v1: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate2;
11903
11904/**
11905 *
11906 * Update an interpolated attribute on an element with 3 bound values surrounded by text.
11907 *
11908 * Used when the value passed to a property has 3 interpolated values in it:
11909 *
11910 * ```html
11911 * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}suffix"></div>
11912 * ```
11913 *
11914 * Its compiled representation is::
11915 *
11916 * ```ts
11917 * ɵɵattributeInterpolate3(
11918 * 'title', 'prefix', v0, '-', v1, '-', v2, 'suffix');
11919 * ```
11920 *
11921 * @param attrName The name of the attribute to update
11922 * @param prefix Static value used for concatenation only.
11923 * @param v0 Value checked for change.
11924 * @param i0 Static value used for concatenation only.
11925 * @param v1 Value checked for change.
11926 * @param i1 Static value used for concatenation only.
11927 * @param v2 Value checked for change.
11928 * @param suffix Static value used for concatenation only.
11929 * @param sanitizer An optional sanitizer function
11930 * @returns itself, so that it may be chained.
11931 * @codeGenApi
11932 */
11933export declare function ɵɵattributeInterpolate3(attrName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate3;
11934
11935/**
11936 *
11937 * Update an interpolated attribute on an element with 4 bound values surrounded by text.
11938 *
11939 * Used when the value passed to a property has 4 interpolated values in it:
11940 *
11941 * ```html
11942 * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix"></div>
11943 * ```
11944 *
11945 * Its compiled representation is::
11946 *
11947 * ```ts
11948 * ɵɵattributeInterpolate4(
11949 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');
11950 * ```
11951 *
11952 * @param attrName The name of the attribute to update
11953 * @param prefix Static value used for concatenation only.
11954 * @param v0 Value checked for change.
11955 * @param i0 Static value used for concatenation only.
11956 * @param v1 Value checked for change.
11957 * @param i1 Static value used for concatenation only.
11958 * @param v2 Value checked for change.
11959 * @param i2 Static value used for concatenation only.
11960 * @param v3 Value checked for change.
11961 * @param suffix Static value used for concatenation only.
11962 * @param sanitizer An optional sanitizer function
11963 * @returns itself, so that it may be chained.
11964 * @codeGenApi
11965 */
11966export declare function ɵɵattributeInterpolate4(attrName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate4;
11967
11968/**
11969 *
11970 * Update an interpolated attribute on an element with 5 bound values surrounded by text.
11971 *
11972 * Used when the value passed to a property has 5 interpolated values in it:
11973 *
11974 * ```html
11975 * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix"></div>
11976 * ```
11977 *
11978 * Its compiled representation is::
11979 *
11980 * ```ts
11981 * ɵɵattributeInterpolate5(
11982 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');
11983 * ```
11984 *
11985 * @param attrName The name of the attribute to update
11986 * @param prefix Static value used for concatenation only.
11987 * @param v0 Value checked for change.
11988 * @param i0 Static value used for concatenation only.
11989 * @param v1 Value checked for change.
11990 * @param i1 Static value used for concatenation only.
11991 * @param v2 Value checked for change.
11992 * @param i2 Static value used for concatenation only.
11993 * @param v3 Value checked for change.
11994 * @param i3 Static value used for concatenation only.
11995 * @param v4 Value checked for change.
11996 * @param suffix Static value used for concatenation only.
11997 * @param sanitizer An optional sanitizer function
11998 * @returns itself, so that it may be chained.
11999 * @codeGenApi
12000 */
12001export declare function ɵɵattributeInterpolate5(attrName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate5;
12002
12003/**
12004 *
12005 * Update an interpolated attribute on an element with 6 bound values surrounded by text.
12006 *
12007 * Used when the value passed to a property has 6 interpolated values in it:
12008 *
12009 * ```html
12010 * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix"></div>
12011 * ```
12012 *
12013 * Its compiled representation is::
12014 *
12015 * ```ts
12016 * ɵɵattributeInterpolate6(
12017 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');
12018 * ```
12019 *
12020 * @param attrName The name of the attribute to update
12021 * @param prefix Static value used for concatenation only.
12022 * @param v0 Value checked for change.
12023 * @param i0 Static value used for concatenation only.
12024 * @param v1 Value checked for change.
12025 * @param i1 Static value used for concatenation only.
12026 * @param v2 Value checked for change.
12027 * @param i2 Static value used for concatenation only.
12028 * @param v3 Value checked for change.
12029 * @param i3 Static value used for concatenation only.
12030 * @param v4 Value checked for change.
12031 * @param i4 Static value used for concatenation only.
12032 * @param v5 Value checked for change.
12033 * @param suffix Static value used for concatenation only.
12034 * @param sanitizer An optional sanitizer function
12035 * @returns itself, so that it may be chained.
12036 * @codeGenApi
12037 */
12038export declare function ɵɵattributeInterpolate6(attrName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate6;
12039
12040/**
12041 *
12042 * Update an interpolated attribute on an element with 7 bound values surrounded by text.
12043 *
12044 * Used when the value passed to a property has 7 interpolated values in it:
12045 *
12046 * ```html
12047 * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix"></div>
12048 * ```
12049 *
12050 * Its compiled representation is::
12051 *
12052 * ```ts
12053 * ɵɵattributeInterpolate7(
12054 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix');
12055 * ```
12056 *
12057 * @param attrName The name of the attribute to update
12058 * @param prefix Static value used for concatenation only.
12059 * @param v0 Value checked for change.
12060 * @param i0 Static value used for concatenation only.
12061 * @param v1 Value checked for change.
12062 * @param i1 Static value used for concatenation only.
12063 * @param v2 Value checked for change.
12064 * @param i2 Static value used for concatenation only.
12065 * @param v3 Value checked for change.
12066 * @param i3 Static value used for concatenation only.
12067 * @param v4 Value checked for change.
12068 * @param i4 Static value used for concatenation only.
12069 * @param v5 Value checked for change.
12070 * @param i5 Static value used for concatenation only.
12071 * @param v6 Value checked for change.
12072 * @param suffix Static value used for concatenation only.
12073 * @param sanitizer An optional sanitizer function
12074 * @returns itself, so that it may be chained.
12075 * @codeGenApi
12076 */
12077export declare function ɵɵattributeInterpolate7(attrName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate7;
12078
12079/**
12080 *
12081 * Update an interpolated attribute on an element with 8 bound values surrounded by text.
12082 *
12083 * Used when the value passed to a property has 8 interpolated values in it:
12084 *
12085 * ```html
12086 * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix"></div>
12087 * ```
12088 *
12089 * Its compiled representation is::
12090 *
12091 * ```ts
12092 * ɵɵattributeInterpolate8(
12093 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, 'suffix');
12094 * ```
12095 *
12096 * @param attrName The name of the attribute to update
12097 * @param prefix Static value used for concatenation only.
12098 * @param v0 Value checked for change.
12099 * @param i0 Static value used for concatenation only.
12100 * @param v1 Value checked for change.
12101 * @param i1 Static value used for concatenation only.
12102 * @param v2 Value checked for change.
12103 * @param i2 Static value used for concatenation only.
12104 * @param v3 Value checked for change.
12105 * @param i3 Static value used for concatenation only.
12106 * @param v4 Value checked for change.
12107 * @param i4 Static value used for concatenation only.
12108 * @param v5 Value checked for change.
12109 * @param i5 Static value used for concatenation only.
12110 * @param v6 Value checked for change.
12111 * @param i6 Static value used for concatenation only.
12112 * @param v7 Value checked for change.
12113 * @param suffix Static value used for concatenation only.
12114 * @param sanitizer An optional sanitizer function
12115 * @returns itself, so that it may be chained.
12116 * @codeGenApi
12117 */
12118export declare function ɵɵattributeInterpolate8(attrName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, i6: string, v7: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate8;
12119
12120/**
12121 * Update an interpolated attribute on an element with 9 or more bound values surrounded by text.
12122 *
12123 * Used when the number of interpolated values exceeds 8.
12124 *
12125 * ```html
12126 * <div
12127 * title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix"></div>
12128 * ```
12129 *
12130 * Its compiled representation is::
12131 *
12132 * ```ts
12133 * ɵɵattributeInterpolateV(
12134 * 'title', ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9,
12135 * 'suffix']);
12136 * ```
12137 *
12138 * @param attrName The name of the attribute to update.
12139 * @param values The collection of values and the strings in-between those values, beginning with
12140 * a string prefix and ending with a string suffix.
12141 * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)
12142 * @param sanitizer An optional sanitizer function
12143 * @returns itself, so that it may be chained.
12144 * @codeGenApi
12145 */
12146export declare function ɵɵattributeInterpolateV(attrName: string, values: any[], sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolateV;
12147
12148/**
12149 * Update class bindings using an object literal or class-string on an element.
12150 *
12151 * This instruction is meant to apply styling via the `[class]="exp"` template bindings.
12152 * When classes are applied to the element they will then be updated with
12153 * respect to any styles/classes set via `classProp`. If any
12154 * classes are set to falsy then they will be removed from the element.
12155 *
12156 * Note that the styling instruction will not be applied until `stylingApply` is called.
12157 * Note that this will the provided classMap value to the host element if this function is called
12158 * within a host binding.
12159 *
12160 * @param classes A key/value map or string of CSS classes that will be added to the
12161 * given element. Any missing classes (that have already been applied to the element
12162 * beforehand) will be removed (unset) from the element's list of CSS classes.
12163 *
12164 * @codeGenApi
12165 */
12166export declare function ɵɵclassMap(classes: {
12167 [className: string]: boolean | undefined | null;
12168} | string | undefined | null): void;
12169
12170
12171/**
12172 *
12173 * Update an interpolated class on an element with single bound value surrounded by text.
12174 *
12175 * Used when the value passed to a property has 1 interpolated value in it:
12176 *
12177 * ```html
12178 * <div class="prefix{{v0}}suffix"></div>
12179 * ```
12180 *
12181 * Its compiled representation is:
12182 *
12183 * ```ts
12184 * ɵɵclassMapInterpolate1('prefix', v0, 'suffix');
12185 * ```
12186 *
12187 * @param prefix Static value used for concatenation only.
12188 * @param v0 Value checked for change.
12189 * @param suffix Static value used for concatenation only.
12190 * @codeGenApi
12191 */
12192export declare function ɵɵclassMapInterpolate1(prefix: string, v0: any, suffix: string): void;
12193
12194/**
12195 *
12196 * Update an interpolated class on an element with 2 bound values surrounded by text.
12197 *
12198 * Used when the value passed to a property has 2 interpolated values in it:
12199 *
12200 * ```html
12201 * <div class="prefix{{v0}}-{{v1}}suffix"></div>
12202 * ```
12203 *
12204 * Its compiled representation is:
12205 *
12206 * ```ts
12207 * ɵɵclassMapInterpolate2('prefix', v0, '-', v1, 'suffix');
12208 * ```
12209 *
12210 * @param prefix Static value used for concatenation only.
12211 * @param v0 Value checked for change.
12212 * @param i0 Static value used for concatenation only.
12213 * @param v1 Value checked for change.
12214 * @param suffix Static value used for concatenation only.
12215 * @codeGenApi
12216 */
12217export declare function ɵɵclassMapInterpolate2(prefix: string, v0: any, i0: string, v1: any, suffix: string): void;
12218
12219/**
12220 *
12221 * Update an interpolated class on an element with 3 bound values surrounded by text.
12222 *
12223 * Used when the value passed to a property has 3 interpolated values in it:
12224 *
12225 * ```html
12226 * <div class="prefix{{v0}}-{{v1}}-{{v2}}suffix"></div>
12227 * ```
12228 *
12229 * Its compiled representation is:
12230 *
12231 * ```ts
12232 * ɵɵclassMapInterpolate3(
12233 * 'prefix', v0, '-', v1, '-', v2, 'suffix');
12234 * ```
12235 *
12236 * @param prefix Static value used for concatenation only.
12237 * @param v0 Value checked for change.
12238 * @param i0 Static value used for concatenation only.
12239 * @param v1 Value checked for change.
12240 * @param i1 Static value used for concatenation only.
12241 * @param v2 Value checked for change.
12242 * @param suffix Static value used for concatenation only.
12243 * @codeGenApi
12244 */
12245export declare function ɵɵclassMapInterpolate3(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string): void;
12246
12247/**
12248 *
12249 * Update an interpolated class on an element with 4 bound values surrounded by text.
12250 *
12251 * Used when the value passed to a property has 4 interpolated values in it:
12252 *
12253 * ```html
12254 * <div class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix"></div>
12255 * ```
12256 *
12257 * Its compiled representation is:
12258 *
12259 * ```ts
12260 * ɵɵclassMapInterpolate4(
12261 * 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');
12262 * ```
12263 *
12264 * @param prefix Static value used for concatenation only.
12265 * @param v0 Value checked for change.
12266 * @param i0 Static value used for concatenation only.
12267 * @param v1 Value checked for change.
12268 * @param i1 Static value used for concatenation only.
12269 * @param v2 Value checked for change.
12270 * @param i2 Static value used for concatenation only.
12271 * @param v3 Value checked for change.
12272 * @param suffix Static value used for concatenation only.
12273 * @codeGenApi
12274 */
12275export declare function ɵɵclassMapInterpolate4(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, suffix: string): void;
12276
12277/**
12278 *
12279 * Update an interpolated class on an element with 5 bound values surrounded by text.
12280 *
12281 * Used when the value passed to a property has 5 interpolated values in it:
12282 *
12283 * ```html
12284 * <div class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix"></div>
12285 * ```
12286 *
12287 * Its compiled representation is:
12288 *
12289 * ```ts
12290 * ɵɵclassMapInterpolate5(
12291 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');
12292 * ```
12293 *
12294 * @param prefix Static value used for concatenation only.
12295 * @param v0 Value checked for change.
12296 * @param i0 Static value used for concatenation only.
12297 * @param v1 Value checked for change.
12298 * @param i1 Static value used for concatenation only.
12299 * @param v2 Value checked for change.
12300 * @param i2 Static value used for concatenation only.
12301 * @param v3 Value checked for change.
12302 * @param i3 Static value used for concatenation only.
12303 * @param v4 Value checked for change.
12304 * @param suffix Static value used for concatenation only.
12305 * @codeGenApi
12306 */
12307export declare function ɵɵclassMapInterpolate5(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, suffix: string): void;
12308
12309/**
12310 *
12311 * Update an interpolated class on an element with 6 bound values surrounded by text.
12312 *
12313 * Used when the value passed to a property has 6 interpolated values in it:
12314 *
12315 * ```html
12316 * <div class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix"></div>
12317 * ```
12318 *
12319 * Its compiled representation is:
12320 *
12321 * ```ts
12322 * ɵɵclassMapInterpolate6(
12323 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');
12324 * ```
12325 *
12326 * @param prefix Static value used for concatenation only.
12327 * @param v0 Value checked for change.
12328 * @param i0 Static value used for concatenation only.
12329 * @param v1 Value checked for change.
12330 * @param i1 Static value used for concatenation only.
12331 * @param v2 Value checked for change.
12332 * @param i2 Static value used for concatenation only.
12333 * @param v3 Value checked for change.
12334 * @param i3 Static value used for concatenation only.
12335 * @param v4 Value checked for change.
12336 * @param i4 Static value used for concatenation only.
12337 * @param v5 Value checked for change.
12338 * @param suffix Static value used for concatenation only.
12339 * @codeGenApi
12340 */
12341export declare function ɵɵclassMapInterpolate6(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, suffix: string): void;
12342
12343/**
12344 *
12345 * Update an interpolated class on an element with 7 bound values surrounded by text.
12346 *
12347 * Used when the value passed to a property has 7 interpolated values in it:
12348 *
12349 * ```html
12350 * <div class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix"></div>
12351 * ```
12352 *
12353 * Its compiled representation is:
12354 *
12355 * ```ts
12356 * ɵɵclassMapInterpolate7(
12357 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix');
12358 * ```
12359 *
12360 * @param prefix Static value used for concatenation only.
12361 * @param v0 Value checked for change.
12362 * @param i0 Static value used for concatenation only.
12363 * @param v1 Value checked for change.
12364 * @param i1 Static value used for concatenation only.
12365 * @param v2 Value checked for change.
12366 * @param i2 Static value used for concatenation only.
12367 * @param v3 Value checked for change.
12368 * @param i3 Static value used for concatenation only.
12369 * @param v4 Value checked for change.
12370 * @param i4 Static value used for concatenation only.
12371 * @param v5 Value checked for change.
12372 * @param i5 Static value used for concatenation only.
12373 * @param v6 Value checked for change.
12374 * @param suffix Static value used for concatenation only.
12375 * @codeGenApi
12376 */
12377export declare function ɵɵclassMapInterpolate7(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, suffix: string): void;
12378
12379/**
12380 *
12381 * Update an interpolated class on an element with 8 bound values surrounded by text.
12382 *
12383 * Used when the value passed to a property has 8 interpolated values in it:
12384 *
12385 * ```html
12386 * <div class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix"></div>
12387 * ```
12388 *
12389 * Its compiled representation is:
12390 *
12391 * ```ts
12392 * ɵɵclassMapInterpolate8(
12393 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, 'suffix');
12394 * ```
12395 *
12396 * @param prefix Static value used for concatenation only.
12397 * @param v0 Value checked for change.
12398 * @param i0 Static value used for concatenation only.
12399 * @param v1 Value checked for change.
12400 * @param i1 Static value used for concatenation only.
12401 * @param v2 Value checked for change.
12402 * @param i2 Static value used for concatenation only.
12403 * @param v3 Value checked for change.
12404 * @param i3 Static value used for concatenation only.
12405 * @param v4 Value checked for change.
12406 * @param i4 Static value used for concatenation only.
12407 * @param v5 Value checked for change.
12408 * @param i5 Static value used for concatenation only.
12409 * @param v6 Value checked for change.
12410 * @param i6 Static value used for concatenation only.
12411 * @param v7 Value checked for change.
12412 * @param suffix Static value used for concatenation only.
12413 * @codeGenApi
12414 */
12415export declare function ɵɵclassMapInterpolate8(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, i6: string, v7: any, suffix: string): void;
12416
12417/**
12418 * Update an interpolated class on an element with 9 or more bound values surrounded by text.
12419 *
12420 * Used when the number of interpolated values exceeds 8.
12421 *
12422 * ```html
12423 * <div
12424 * class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix"></div>
12425 * ```
12426 *
12427 * Its compiled representation is:
12428 *
12429 * ```ts
12430 * ɵɵclassMapInterpolateV(
12431 * ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9,
12432 * 'suffix']);
12433 * ```
12434 *.
12435 * @param values The collection of values and the strings in-between those values, beginning with
12436 * a string prefix and ending with a string suffix.
12437 * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)
12438 * @codeGenApi
12439 */
12440export declare function ɵɵclassMapInterpolateV(values: any[]): void;
12441
12442/**
12443 * Update a class binding on an element with the provided value.
12444 *
12445 * This instruction is meant to handle the `[class.foo]="exp"` case and,
12446 * therefore, the class binding itself must already be allocated using
12447 * `styling` within the creation block.
12448 *
12449 * @param prop A valid CSS class (only one).
12450 * @param value A true/false value which will turn the class on or off.
12451 *
12452 * Note that this will apply the provided class value to the host element if this function
12453 * is called within a host binding function.
12454 *
12455 * @codeGenApi
12456 */
12457export declare function ɵɵclassProp(className: string, value: boolean | undefined | null): typeof ɵɵclassProp;
12458
12459/**
12460 * @publicApi
12461 */
12462export declare type ɵɵComponentDeclaration<T, Selector extends String, ExportAs extends string[], InputMap extends {
12463 [key: string]: string;
12464}, OutputMap extends {
12465 [key: string]: string;
12466}, QueryFields extends string[], NgContentSelectors extends string[]> = unknown;
12467
12468/**
12469 * Registers a QueryList, associated with a content query, for later refresh (part of a view
12470 * refresh).
12471 *
12472 * @param directiveIndex Current directive index
12473 * @param predicate The type for which the query will search
12474 * @param flags Flags associated with the query
12475 * @param read What to save in the query
12476 * @returns QueryList<T>
12477 *
12478 * @codeGenApi
12479 */
12480export declare function ɵɵcontentQuery<T>(directiveIndex: number, predicate: ProviderToken<unknown> | string[], flags: QueryFlags, read?: any): void;
12481
12482/**
12483 * Copies the fields not handled by the `ɵɵInheritDefinitionFeature` from the supertype of a
12484 * definition.
12485 *
12486 * This exists primarily to support ngcc migration of an existing View Engine pattern, where an
12487 * entire decorator is inherited from a parent to a child class. When ngcc detects this case, it
12488 * generates a skeleton definition on the child class, and applies this feature.
12489 *
12490 * The `ɵɵCopyDefinitionFeature` then copies any needed fields from the parent class' definition,
12491 * including things like the component template function.
12492 *
12493 * @param definition The definition of a child class which inherits from a parent class with its
12494 * own definition.
12495 *
12496 * @codeGenApi
12497 */
12498export declare function ɵɵCopyDefinitionFeature(definition: ɵDirectiveDef<any> | ɵComponentDef<any>): void;
12499
12500/**
12501 * Create a component definition object.
12502 *
12503 *
12504 * # Example
12505 * ```
12506 * class MyDirective {
12507 * // Generated by Angular Template Compiler
12508 * // [Symbol] syntax will not be supported by TypeScript until v2.7
12509 * static ɵcmp = defineComponent({
12510 * ...
12511 * });
12512 * }
12513 * ```
12514 * @codeGenApi
12515 */
12516export declare function ɵɵdefineComponent<T>(componentDefinition: {
12517 /**
12518 * Directive type, needed to configure the injector.
12519 */
12520 type: Type<T>;
12521 /** The selectors that will be used to match nodes to this component. */
12522 selectors?: ɵCssSelectorList;
12523 /**
12524 * The number of nodes, local refs, and pipes in this component template.
12525 *
12526 * Used to calculate the length of this component's LView array, so we
12527 * can pre-fill the array and set the binding start index.
12528 */
12529 decls: number;
12530 /**
12531 * The number of bindings in this component template (including pure fn bindings).
12532 *
12533 * Used to calculate the length of this component's LView array, so we
12534 * can pre-fill the array and set the host binding start index.
12535 */
12536 vars: number;
12537 /**
12538 * A map of input names.
12539 *
12540 * The format is in: `{[actualPropertyName: string]:(string|[string, string])}`.
12541 *
12542 * Given:
12543 * ```
12544 * class MyComponent {
12545 * @Input()
12546 * publicInput1: string;
12547 *
12548 * @Input('publicInput2')
12549 * declaredInput2: string;
12550 * }
12551 * ```
12552 *
12553 * is described as:
12554 * ```
12555 * {
12556 * publicInput1: 'publicInput1',
12557 * declaredInput2: ['publicInput2', 'declaredInput2'],
12558 * }
12559 * ```
12560 *
12561 * Which the minifier may translate to:
12562 * ```
12563 * {
12564 * minifiedPublicInput1: 'publicInput1',
12565 * minifiedDeclaredInput2: ['publicInput2', 'declaredInput2'],
12566 * }
12567 * ```
12568 *
12569 * This allows the render to re-construct the minified, public, and declared names
12570 * of properties.
12571 *
12572 * NOTE:
12573 * - Because declared and public name are usually same we only generate the array
12574 * `['public', 'declared']` format when they differ.
12575 * - The reason why this API and `outputs` API is not the same is that `NgOnChanges` has
12576 * inconsistent behavior in that it uses declared names rather than minified or public. For
12577 * this reason `NgOnChanges` will be deprecated and removed in future version and this
12578 * API will be simplified to be consistent with `output`.
12579 */
12580 inputs?: {
12581 [P in keyof T]?: string | [string, string];
12582 };
12583 /**
12584 * A map of output names.
12585 *
12586 * The format is in: `{[actualPropertyName: string]:string}`.
12587 *
12588 * Which the minifier may translate to: `{[minifiedPropertyName: string]:string}`.
12589 *
12590 * This allows the render to re-construct the minified and non-minified names
12591 * of properties.
12592 */
12593 outputs?: {
12594 [P in keyof T]?: string;
12595 };
12596 /**
12597 * Function executed by the parent template to allow child directive to apply host bindings.
12598 */
12599 hostBindings?: HostBindingsFunction<T>;
12600 /**
12601 * The number of bindings in this directive `hostBindings` (including pure fn bindings).
12602 *
12603 * Used to calculate the length of the component's LView array, so we
12604 * can pre-fill the array and set the host binding start index.
12605 */
12606 hostVars?: number;
12607 /**
12608 * Assign static attribute values to a host element.
12609 *
12610 * This property will assign static attribute values as well as class and style
12611 * values to a host element. Since attribute values can consist of different types of values, the
12612 * `hostAttrs` array must include the values in the following format:
12613 *
12614 * attrs = [
12615 * // static attributes (like `title`, `name`, `id`...)
12616 * attr1, value1, attr2, value,
12617 *
12618 * // a single namespace value (like `x:id`)
12619 * NAMESPACE_MARKER, namespaceUri1, name1, value1,
12620 *
12621 * // another single namespace value (like `x:name`)
12622 * NAMESPACE_MARKER, namespaceUri2, name2, value2,
12623 *
12624 * // a series of CSS classes that will be applied to the element (no spaces)
12625 * CLASSES_MARKER, class1, class2, class3,
12626 *
12627 * // a series of CSS styles (property + value) that will be applied to the element
12628 * STYLES_MARKER, prop1, value1, prop2, value2
12629 * ]
12630 *
12631 * All non-class and non-style attributes must be defined at the start of the list
12632 * first before all class and style values are set. When there is a change in value
12633 * type (like when classes and styles are introduced) a marker must be used to separate
12634 * the entries. The marker values themselves are set via entries found in the
12635 * [AttributeMarker] enum.
12636 */
12637 hostAttrs?: TAttributes;
12638 /**
12639 * Function to create instances of content queries associated with a given directive.
12640 */
12641 contentQueries?: ContentQueriesFunction<T>;
12642 /**
12643 * Defines the name that can be used in the template to assign this directive to a variable.
12644 *
12645 * See: {@link Directive.exportAs}
12646 */
12647 exportAs?: string[];
12648 /**
12649 * Template function use for rendering DOM.
12650 *
12651 * This function has following structure.
12652 *
12653 * ```
12654 * function Template<T>(ctx:T, creationMode: boolean) {
12655 * if (creationMode) {
12656 * // Contains creation mode instructions.
12657 * }
12658 * // Contains binding update instructions
12659 * }
12660 * ```
12661 *
12662 * Common instructions are:
12663 * Creation mode instructions:
12664 * - `elementStart`, `elementEnd`
12665 * - `text`
12666 * - `container`
12667 * - `listener`
12668 *
12669 * Binding update instructions:
12670 * - `bind`
12671 * - `elementAttribute`
12672 * - `elementProperty`
12673 * - `elementClass`
12674 * - `elementStyle`
12675 *
12676 */
12677 template: ComponentTemplate<T>;
12678 /**
12679 * Constants for the nodes in the component's view.
12680 * Includes attribute arrays, local definition arrays etc.
12681 */
12682 consts?: TConstantsOrFactory;
12683 /**
12684 * An array of `ngContent[selector]` values that were found in the template.
12685 */
12686 ngContentSelectors?: string[];
12687 /**
12688 * Additional set of instructions specific to view query processing. This could be seen as a
12689 * set of instruction to be inserted into the template function.
12690 *
12691 * Query-related instructions need to be pulled out to a specific function as a timing of
12692 * execution is different as compared to all other instructions (after change detection hooks but
12693 * before view hooks).
12694 */
12695 viewQuery?: ViewQueriesFunction<T> | null;
12696 /**
12697 * A list of optional features to apply.
12698 *
12699 * See: {@link NgOnChangesFeature}, {@link ProvidersFeature}
12700 */
12701 features?: ComponentDefFeature[];
12702 /**
12703 * Defines template and style encapsulation options available for Component's {@link Component}.
12704 */
12705 encapsulation?: ViewEncapsulation;
12706 /**
12707 * Defines arbitrary developer-defined data to be stored on a renderer instance.
12708 * This is useful for renderers that delegate to other renderers.
12709 *
12710 * see: animation
12711 */
12712 data?: {
12713 [kind: string]: any;
12714 };
12715 /**
12716 * A set of styles that the component needs to be present for component to render correctly.
12717 */
12718 styles?: string[];
12719 /**
12720 * The strategy that the default change detector uses to detect changes.
12721 * When set, takes effect the next time change detection is triggered.
12722 */
12723 changeDetection?: ChangeDetectionStrategy;
12724 /**
12725 * Registry of directives and components that may be found in this component's view.
12726 *
12727 * The property is either an array of `DirectiveDef`s or a function which returns the array of
12728 * `DirectiveDef`s. The function is necessary to be able to support forward declarations.
12729 */
12730 directives?: DirectiveTypesOrFactory | null;
12731 /**
12732 * Registry of pipes that may be found in this component's view.
12733 *
12734 * The property is either an array of `PipeDefs`s or a function which returns the array of
12735 * `PipeDefs`s. The function is necessary to be able to support forward declarations.
12736 */
12737 pipes?: PipeTypesOrFactory | null;
12738 /**
12739 * The set of schemas that declare elements to be allowed in the component's template.
12740 */
12741 schemas?: SchemaMetadata[] | null;
12742}): unknown;
12743
12744/**
12745 * Create a directive definition object.
12746 *
12747 * # Example
12748 * ```ts
12749 * class MyDirective {
12750 * // Generated by Angular Template Compiler
12751 * // [Symbol] syntax will not be supported by TypeScript until v2.7
12752 * static ɵdir = ɵɵdefineDirective({
12753 * ...
12754 * });
12755 * }
12756 * ```
12757 *
12758 * @codeGenApi
12759 */
12760export declare const ɵɵdefineDirective: <T>(directiveDefinition: {
12761 /**
12762 * Directive type, needed to configure the injector.
12763 */
12764 type: Type<T>;
12765 /** The selectors that will be used to match nodes to this directive. */
12766 selectors?: ɵCssSelectorList | undefined;
12767 /**
12768 * A map of input names.
12769 *
12770 * The format is in: `{[actualPropertyName: string]:(string|[string, string])}`.
12771 *
12772 * Given:
12773 * ```
12774 * class MyComponent {
12775 * @Input()
12776 * publicInput1: string;
12777 *
12778 * @Input('publicInput2')
12779 * declaredInput2: string;
12780 * }
12781 * ```
12782 *
12783 * is described as:
12784 * ```
12785 * {
12786 * publicInput1: 'publicInput1',
12787 * declaredInput2: ['declaredInput2', 'publicInput2'],
12788 * }
12789 * ```
12790 *
12791 * Which the minifier may translate to:
12792 * ```
12793 * {
12794 * minifiedPublicInput1: 'publicInput1',
12795 * minifiedDeclaredInput2: [ 'publicInput2', 'declaredInput2'],
12796 * }
12797 * ```
12798 *
12799 * This allows the render to re-construct the minified, public, and declared names
12800 * of properties.
12801 *
12802 * NOTE:
12803 * - Because declared and public name are usually same we only generate the array
12804 * `['declared', 'public']` format when they differ.
12805 * - The reason why this API and `outputs` API is not the same is that `NgOnChanges` has
12806 * inconsistent behavior in that it uses declared names rather than minified or public. For
12807 * this reason `NgOnChanges` will be deprecated and removed in future version and this
12808 * API will be simplified to be consistent with `output`.
12809 */
12810 inputs?: { [P in keyof T]?: string | [string, string] | undefined; } | undefined;
12811 /**
12812 * A map of output names.
12813 *
12814 * The format is in: `{[actualPropertyName: string]:string}`.
12815 *
12816 * Which the minifier may translate to: `{[minifiedPropertyName: string]:string}`.
12817 *
12818 * This allows the render to re-construct the minified and non-minified names
12819 * of properties.
12820 */
12821 outputs?: { [P_1 in keyof T]?: string | undefined; } | undefined;
12822 /**
12823 * A list of optional features to apply.
12824 *
12825 * See: {@link NgOnChangesFeature}, {@link ProvidersFeature}, {@link InheritDefinitionFeature}
12826 */
12827 features?: DirectiveDefFeature[] | undefined;
12828 /**
12829 * Function executed by the parent template to allow child directive to apply host bindings.
12830 */
12831 hostBindings?: HostBindingsFunction<T> | undefined;
12832 /**
12833 * The number of bindings in this directive `hostBindings` (including pure fn bindings).
12834 *
12835 * Used to calculate the length of the component's LView array, so we
12836 * can pre-fill the array and set the host binding start index.
12837 */
12838 hostVars?: number | undefined;
12839 /**
12840 * Assign static attribute values to a host element.
12841 *
12842 * This property will assign static attribute values as well as class and style
12843 * values to a host element. Since attribute values can consist of different types of values,
12844 * the `hostAttrs` array must include the values in the following format:
12845 *
12846 * attrs = [
12847 * // static attributes (like `title`, `name`, `id`...)
12848 * attr1, value1, attr2, value,
12849 *
12850 * // a single namespace value (like `x:id`)
12851 * NAMESPACE_MARKER, namespaceUri1, name1, value1,
12852 *
12853 * // another single namespace value (like `x:name`)
12854 * NAMESPACE_MARKER, namespaceUri2, name2, value2,
12855 *
12856 * // a series of CSS classes that will be applied to the element (no spaces)
12857 * CLASSES_MARKER, class1, class2, class3,
12858 *
12859 * // a series of CSS styles (property + value) that will be applied to the element
12860 * STYLES_MARKER, prop1, value1, prop2, value2
12861 * ]
12862 *
12863 * All non-class and non-style attributes must be defined at the start of the list
12864 * first before all class and style values are set. When there is a change in value
12865 * type (like when classes and styles are introduced) a marker must be used to separate
12866 * the entries. The marker values themselves are set via entries found in the
12867 * [AttributeMarker] enum.
12868 */
12869 hostAttrs?: TAttributes | undefined;
12870 /**
12871 * Function to create instances of content queries associated with a given directive.
12872 */
12873 contentQueries?: ContentQueriesFunction<T> | undefined;
12874 /**
12875 * Additional set of instructions specific to view query processing. This could be seen as a
12876 * set of instructions to be inserted into the template function.
12877 */
12878 viewQuery?: ViewQueriesFunction<T> | null | undefined;
12879 /**
12880 * Defines the name that can be used in the template to assign this directive to a variable.
12881 *
12882 * See: {@link Directive.exportAs}
12883 */
12884 exportAs?: string[] | undefined;
12885}) => never;
12886
12887/**
12888 * Construct an injectable definition which defines how a token will be constructed by the DI
12889 * system, and in which injectors (if any) it will be available.
12890 *
12891 * This should be assigned to a static `ɵprov` field on a type, which will then be an
12892 * `InjectableType`.
12893 *
12894 * Options:
12895 * * `providedIn` determines which injectors will include the injectable, by either associating it
12896 * with an `@NgModule` or other `InjectorType`, or by specifying that this injectable should be
12897 * provided in the `'root'` injector, which will be the application-level injector in most apps.
12898 * * `factory` gives the zero argument function which will create an instance of the injectable.
12899 * The factory can call `inject` to access the `Injector` and request injection of dependencies.
12900 *
12901 * @codeGenApi
12902 * @publicApi This instruction has been emitted by ViewEngine for some time and is deployed to npm.
12903 */
12904export declare function ɵɵdefineInjectable<T>(opts: {
12905 token: unknown;
12906 providedIn?: Type<any> | 'root' | 'platform' | 'any' | null;
12907 factory: () => T;
12908}): unknown;
12909
12910/**
12911 * Construct an `InjectorDef` which configures an injector.
12912 *
12913 * This should be assigned to a static injector def (`ɵinj`) field on a type, which will then be an
12914 * `InjectorType`.
12915 *
12916 * Options:
12917 *
12918 * * `providers`: an optional array of providers to add to the injector. Each provider must
12919 * either have a factory or point to a type which has a `ɵprov` static property (the
12920 * type must be an `InjectableType`).
12921 * * `imports`: an optional array of imports of other `InjectorType`s or `InjectorTypeWithModule`s
12922 * whose providers will also be added to the injector. Locally provided types will override
12923 * providers from imports.
12924 *
12925 * @codeGenApi
12926 */
12927export declare function ɵɵdefineInjector(options: {
12928 providers?: any[];
12929 imports?: any[];
12930}): unknown;
12931
12932/**
12933 * @codeGenApi
12934 */
12935export declare function ɵɵdefineNgModule<T>(def: {
12936 /** Token representing the module. Used by DI. */
12937 type: T;
12938 /** List of components to bootstrap. */
12939 bootstrap?: Type<any>[] | (() => Type<any>[]);
12940 /** List of components, directives, and pipes declared by this module. */
12941 declarations?: Type<any>[] | (() => Type<any>[]);
12942 /** List of modules or `ModuleWithProviders` imported by this module. */
12943 imports?: Type<any>[] | (() => Type<any>[]);
12944 /**
12945 * List of modules, `ModuleWithProviders`, components, directives, or pipes exported by this
12946 * module.
12947 */
12948 exports?: Type<any>[] | (() => Type<any>[]);
12949 /** The set of schemas that declare elements to be allowed in the NgModule. */
12950 schemas?: SchemaMetadata[] | null;
12951 /** Unique ID for the module that is used with `getModuleFactory`. */
12952 id?: string | null;
12953}): unknown;
12954
12955/**
12956 * Create a pipe definition object.
12957 *
12958 * # Example
12959 * ```
12960 * class MyPipe implements PipeTransform {
12961 * // Generated by Angular Template Compiler
12962 * static ɵpipe = definePipe({
12963 * ...
12964 * });
12965 * }
12966 * ```
12967 * @param pipeDef Pipe definition generated by the compiler
12968 *
12969 * @codeGenApi
12970 */
12971export declare function ɵɵdefinePipe<T>(pipeDef: {
12972 /** Name of the pipe. Used for matching pipes in template to pipe defs. */
12973 name: string;
12974 /** Pipe class reference. Needed to extract pipe lifecycle hooks. */
12975 type: Type<T>;
12976 /** Whether the pipe is pure. */
12977 pure?: boolean;
12978}): unknown;
12979
12980
12981/**
12982 * @publicApi
12983 */
12984export declare type ɵɵDirectiveDeclaration<T, Selector extends string, ExportAs extends string[], InputMap extends {
12985 [key: string]: string;
12986}, OutputMap extends {
12987 [key: string]: string;
12988}, QueryFields extends string[]> = unknown;
12989
12990/**
12991 * Returns the value associated to the given token from the injectors.
12992 *
12993 * `directiveInject` is intended to be used for directive, component and pipe factories.
12994 * All other injection use `inject` which does not walk the node injector tree.
12995 *
12996 * Usage example (in factory function):
12997 *
12998 * ```ts
12999 * class SomeDirective {
13000 * constructor(directive: DirectiveA) {}
13001 *
13002 * static ɵdir = ɵɵdefineDirective({
13003 * type: SomeDirective,
13004 * factory: () => new SomeDirective(ɵɵdirectiveInject(DirectiveA))
13005 * });
13006 * }
13007 * ```
13008 * @param token the type or token to inject
13009 * @param flags Injection flags
13010 * @returns the value from the injector or `null` when not found
13011 *
13012 * @codeGenApi
13013 */
13014export declare function ɵɵdirectiveInject<T>(token: ProviderToken<T>): T;
13015
13016export declare function ɵɵdirectiveInject<T>(token: ProviderToken<T>, flags: InjectFlags): T;
13017
13018/**
13019 * Disables directive matching on element.
13020 *
13021 * * Example:
13022 * ```
13023 * <my-comp my-directive>
13024 * Should match component / directive.
13025 * </my-comp>
13026 * <div ngNonBindable>
13027 * <!-- ɵɵdisableBindings() -->
13028 * <my-comp my-directive>
13029 * Should not match component / directive because we are in ngNonBindable.
13030 * </my-comp>
13031 * <!-- ɵɵenableBindings() -->
13032 * </div>
13033 * ```
13034 *
13035 * @codeGenApi
13036 */
13037export declare function ɵɵdisableBindings(): void;
13038
13039/**
13040 * Creates an empty element using {@link elementStart} and {@link elementEnd}
13041 *
13042 * @param index Index of the element in the data array
13043 * @param name Name of the DOM Node
13044 * @param attrsIndex Index of the element's attributes in the `consts` array.
13045 * @param localRefsIndex Index of the element's local references in the `consts` array.
13046 *
13047 * @codeGenApi
13048 */
13049export declare function ɵɵelement(index: number, name: string, attrsIndex?: number | null, localRefsIndex?: number): void;
13050
13051/**
13052 * Creates an empty logical container using {@link elementContainerStart}
13053 * and {@link elementContainerEnd}
13054 *
13055 * @param index Index of the element in the LView array
13056 * @param attrsIndex Index of the container attributes in the `consts` array.
13057 * @param localRefsIndex Index of the container's local references in the `consts` array.
13058 *
13059 * @codeGenApi
13060 */
13061export declare function ɵɵelementContainer(index: number, attrsIndex?: number | null, localRefsIndex?: number): void;
13062
13063/**
13064 * Mark the end of the <ng-container>.
13065 *
13066 * @codeGenApi
13067 */
13068export declare function ɵɵelementContainerEnd(): void;
13069
13070/**
13071 * Creates a logical container for other nodes (<ng-container>) backed by a comment node in the DOM.
13072 * The instruction must later be followed by `elementContainerEnd()` call.
13073 *
13074 * @param index Index of the element in the LView array
13075 * @param attrsIndex Index of the container attributes in the `consts` array.
13076 * @param localRefsIndex Index of the container's local references in the `consts` array.
13077 *
13078 * Even if this instruction accepts a set of attributes no actual attribute values are propagated to
13079 * the DOM (as a comment node can't have attributes). Attributes are here only for directive
13080 * matching purposes and setting initial inputs of directives.
13081 *
13082 * @codeGenApi
13083 */
13084export declare function ɵɵelementContainerStart(index: number, attrsIndex?: number | null, localRefsIndex?: number): void;
13085
13086/**
13087 * Mark the end of the element.
13088 *
13089 * @codeGenApi
13090 */
13091export declare function ɵɵelementEnd(): void;
13092
13093
13094/**
13095 * Create DOM element. The instruction must later be followed by `elementEnd()` call.
13096 *
13097 * @param index Index of the element in the LView array
13098 * @param name Name of the DOM Node
13099 * @param attrsIndex Index of the element's attributes in the `consts` array.
13100 * @param localRefsIndex Index of the element's local references in the `consts` array.
13101 *
13102 * Attributes and localRefs are passed as an array of strings where elements with an even index
13103 * hold an attribute name and elements with an odd index hold an attribute value, ex.:
13104 * ['id', 'warning5', 'class', 'alert']
13105 *
13106 * @codeGenApi
13107 */
13108export declare function ɵɵelementStart(index: number, name: string, attrsIndex?: number | null, localRefsIndex?: number): void;
13109
13110/**
13111 * Enables directive matching on elements.
13112 *
13113 * * Example:
13114 * ```
13115 * <my-comp my-directive>
13116 * Should match component / directive.
13117 * </my-comp>
13118 * <div ngNonBindable>
13119 * <!-- ɵɵdisableBindings() -->
13120 * <my-comp my-directive>
13121 * Should not match component / directive because we are in ngNonBindable.
13122 * </my-comp>
13123 * <!-- ɵɵenableBindings() -->
13124 * </div>
13125 * ```
13126 *
13127 * @codeGenApi
13128 */
13129export declare function ɵɵenableBindings(): void;
13130
13131/**
13132 * @publicApi
13133 */
13134export declare type ɵɵFactoryDeclaration<T, CtorDependencies extends CtorDependency[]> = unknown;
13135
13136export declare enum ɵɵFactoryTarget {
13137 Directive = 0,
13138 Component = 1,
13139 Injectable = 2,
13140 Pipe = 3,
13141 NgModule = 4
13142}
13143
13144/**
13145 * Returns the current OpaqueViewState instance.
13146 *
13147 * Used in conjunction with the restoreView() instruction to save a snapshot
13148 * of the current view and restore it when listeners are invoked. This allows
13149 * walking the declaration view tree in listeners to get vars from parent views.
13150 *
13151 * @codeGenApi
13152 */
13153export declare function ɵɵgetCurrentView(): OpaqueViewState;
13154
13155/**
13156 * @codeGenApi
13157 */
13158export declare function ɵɵgetInheritedFactory<T>(type: Type<any>): (type: Type<T>) => T;
13159
13160/**
13161 * Update a property on a host element. Only applies to native node properties, not inputs.
13162 *
13163 * Operates on the element selected by index via the {@link select} instruction.
13164 *
13165 * @param propName Name of property. Because it is going to DOM, this is not subject to
13166 * renaming as part of minification.
13167 * @param value New value to write.
13168 * @param sanitizer An optional function used to sanitize the value.
13169 * @returns This function returns itself so that it may be chained
13170 * (e.g. `property('name', ctx.name)('title', ctx.title)`)
13171 *
13172 * @codeGenApi
13173 */
13174export declare function ɵɵhostProperty<T>(propName: string, value: T, sanitizer?: SanitizerFn | null): typeof ɵɵhostProperty;
13175
13176/**
13177 *
13178 * Use this instruction to create a translation block that doesn't contain any placeholder.
13179 * It calls both {@link i18nStart} and {@link i18nEnd} in one instruction.
13180 *
13181 * The translation `message` is the value which is locale specific. The translation string may
13182 * contain placeholders which associate inner elements and sub-templates within the translation.
13183 *
13184 * The translation `message` placeholders are:
13185 * - `�{index}(:{block})�`: *Binding Placeholder*: Marks a location where an expression will be
13186 * interpolated into. The placeholder `index` points to the expression binding index. An optional
13187 * `block` that matches the sub-template in which it was declared.
13188 * - `�#{index}(:{block})�`/`�/#{index}(:{block})�`: *Element Placeholder*: Marks the beginning
13189 * and end of DOM element that were embedded in the original translation block. The placeholder
13190 * `index` points to the element index in the template instructions set. An optional `block` that
13191 * matches the sub-template in which it was declared.
13192 * - `�*{index}:{block}�`/`�/*{index}:{block}�`: *Sub-template Placeholder*: Sub-templates must be
13193 * split up and translated separately in each angular template function. The `index` points to the
13194 * `template` instruction index. A `block` that matches the sub-template in which it was declared.
13195 *
13196 * @param index A unique index of the translation in the static block.
13197 * @param messageIndex An index of the translation message from the `def.consts` array.
13198 * @param subTemplateIndex Optional sub-template index in the `message`.
13199 *
13200 * @codeGenApi
13201 */
13202export declare function ɵɵi18n(index: number, messageIndex: number, subTemplateIndex?: number): void;
13203
13204/**
13205 * Updates a translation block or an i18n attribute when the bindings have changed.
13206 *
13207 * @param index Index of either {@link i18nStart} (translation block) or {@link i18nAttributes}
13208 * (i18n attribute) on which it should update the content.
13209 *
13210 * @codeGenApi
13211 */
13212export declare function ɵɵi18nApply(index: number): void;
13213
13214/**
13215 * Marks a list of attributes as translatable.
13216 *
13217 * @param index A unique index in the static block
13218 * @param values
13219 *
13220 * @codeGenApi
13221 */
13222export declare function ɵɵi18nAttributes(index: number, attrsIndex: number): void;
13223
13224/**
13225 * Translates a translation block marked by `i18nStart` and `i18nEnd`. It inserts the text/ICU nodes
13226 * into the render tree, moves the placeholder nodes and removes the deleted nodes.
13227 *
13228 * @codeGenApi
13229 */
13230export declare function ɵɵi18nEnd(): void;
13231
13232/**
13233 * Stores the values of the bindings during each update cycle in order to determine if we need to
13234 * update the translated nodes.
13235 *
13236 * @param value The binding's value
13237 * @returns This function returns itself so that it may be chained
13238 * (e.g. `i18nExp(ctx.name)(ctx.title)`)
13239 *
13240 * @codeGenApi
13241 */
13242export declare function ɵɵi18nExp<T>(value: T): typeof ɵɵi18nExp;
13243
13244/**
13245 * Handles message string post-processing for internationalization.
13246 *
13247 * Handles message string post-processing by transforming it from intermediate
13248 * format (that might contain some markers that we need to replace) to the final
13249 * form, consumable by i18nStart instruction. Post processing steps include:
13250 *
13251 * 1. Resolve all multi-value cases (like [�*1:1��#2:1�|�#4:1�|�5�])
13252 * 2. Replace all ICU vars (like "VAR_PLURAL")
13253 * 3. Replace all placeholders used inside ICUs in a form of {PLACEHOLDER}
13254 * 4. Replace all ICU references with corresponding values (like �ICU_EXP_ICU_1�)
13255 * in case multiple ICUs have the same placeholder name
13256 *
13257 * @param message Raw translation string for post processing
13258 * @param replacements Set of replacements that should be applied
13259 *
13260 * @returns Transformed string that can be consumed by i18nStart instruction
13261 *
13262 * @codeGenApi
13263 */
13264export declare function ɵɵi18nPostprocess(message: string, replacements?: {
13265 [key: string]: (string | string[]);
13266}): string;
13267
13268/**
13269 * Marks a block of text as translatable.
13270 *
13271 * The instructions `i18nStart` and `i18nEnd` mark the translation block in the template.
13272 * The translation `message` is the value which is locale specific. The translation string may
13273 * contain placeholders which associate inner elements and sub-templates within the translation.
13274 *
13275 * The translation `message` placeholders are:
13276 * - `�{index}(:{block})�`: *Binding Placeholder*: Marks a location where an expression will be
13277 * interpolated into. The placeholder `index` points to the expression binding index. An optional
13278 * `block` that matches the sub-template in which it was declared.
13279 * - `�#{index}(:{block})�`/`�/#{index}(:{block})�`: *Element Placeholder*: Marks the beginning
13280 * and end of DOM element that were embedded in the original translation block. The placeholder
13281 * `index` points to the element index in the template instructions set. An optional `block` that
13282 * matches the sub-template in which it was declared.
13283 * - `�*{index}:{block}�`/`�/*{index}:{block}�`: *Sub-template Placeholder*: Sub-templates must be
13284 * split up and translated separately in each angular template function. The `index` points to the
13285 * `template` instruction index. A `block` that matches the sub-template in which it was declared.
13286 *
13287 * @param index A unique index of the translation in the static block.
13288 * @param messageIndex An index of the translation message from the `def.consts` array.
13289 * @param subTemplateIndex Optional sub-template index in the `message`.
13290 *
13291 * @codeGenApi
13292 */
13293export declare function ɵɵi18nStart(index: number, messageIndex: number, subTemplateIndex?: number): void;
13294
13295/**
13296 * Merges the definition from a super class to a sub class.
13297 * @param definition The definition that is a SubClass of another directive of component
13298 *
13299 * @codeGenApi
13300 */
13301export declare function ɵɵInheritDefinitionFeature(definition: ɵDirectiveDef<any> | ɵComponentDef<any>): void;
13302
13303/**
13304 * Generated instruction: Injects a token from the currently active injector.
13305 *
13306 * Must be used in the context of a factory function such as one defined for an
13307 * `InjectionToken`. Throws an error if not called from such a context.
13308 *
13309 * (Additional documentation moved to `inject`, as it is the public API, and an alias for this
13310 * instruction)
13311 *
13312 * @see inject
13313 * @codeGenApi
13314 * @publicApi This instruction has been emitted by ViewEngine for some time and is deployed to npm.
13315 */
13316export declare function ɵɵinject<T>(token: ProviderToken<T>): T;
13317
13318export declare function ɵɵinject<T>(token: ProviderToken<T>, flags?: InjectFlags): T | null;
13319
13320/**
13321 * Information about how a type or `InjectionToken` interfaces with the DI system.
13322 *
13323 * At a minimum, this includes a `factory` which defines how to create the given type `T`, possibly
13324 * requesting injection of other types if necessary.
13325 *
13326 * Optionally, a `providedIn` parameter specifies that the given type belongs to a particular
13327 * `Injector`, `NgModule`, or a special scope (e.g. `'root'`). A value of `null` indicates
13328 * that the injectable does not belong to any scope.
13329 *
13330 * @codeGenApi
13331 * @publicApi The ViewEngine compiler emits code with this type for injectables. This code is
13332 * deployed to npm, and should be treated as public api.
13333
13334 */
13335export declare interface ɵɵInjectableDeclaration<T> {
13336 /**
13337 * Specifies that the given type belongs to a particular injector:
13338 * - `InjectorType` such as `NgModule`,
13339 * - `'root'` the root injector
13340 * - `'any'` all injectors.
13341 * - `null`, does not belong to any injector. Must be explicitly listed in the injector
13342 * `providers`.
13343 */
13344 providedIn: InjectorType<any> | 'root' | 'platform' | 'any' | null;
13345 /**
13346 * The token to which this definition belongs.
13347 *
13348 * Note that this may not be the same as the type that the `factory` will create.
13349 */
13350 token: unknown;
13351 /**
13352 * Factory method to execute to create an instance of the injectable.
13353 */
13354 factory: (t?: Type<any>) => T;
13355 /**
13356 * In a case of no explicit injector, a location where the instance of the injectable is stored.
13357 */
13358 value: T | undefined;
13359}
13360
13361/**
13362 * Facade for the attribute injection from DI.
13363 *
13364 * @codeGenApi
13365 */
13366export declare function ɵɵinjectAttribute(attrNameToInject: string): string | null;
13367
13368/**
13369 * @publicApi
13370 */
13371export declare type ɵɵInjectorDeclaration<T> = unknown;
13372
13373/**
13374 * Information about the providers to be included in an `Injector` as well as how the given type
13375 * which carries the information should be created by the DI system.
13376 *
13377 * An `InjectorDef` can import other types which have `InjectorDefs`, forming a deep nested
13378 * structure of providers with a defined priority (identically to how `NgModule`s also have
13379 * an import/dependency structure).
13380 *
13381 * NOTE: This is a private type and should not be exported
13382 *
13383 * @codeGenApi
13384 */
13385export declare interface ɵɵInjectorDef<T> {
13386 providers: (Type<any> | ValueProvider | ExistingProvider | FactoryProvider | ConstructorProvider | StaticClassProvider | ClassProvider | any[])[];
13387 imports: (InjectorType<any> | InjectorTypeWithProviders<any>)[];
13388}
13389
13390/**
13391 * Throws an error indicating that a factory function could not be generated by the compiler for a
13392 * particular class.
13393 *
13394 * This instruction allows the actual error message to be optimized away when ngDevMode is turned
13395 * off, saving bytes of generated code while still providing a good experience in dev mode.
13396 *
13397 * The name of the class is not mentioned here, but will be in the generated factory function name
13398 * and thus in the stack trace.
13399 *
13400 * @codeGenApi
13401 */
13402export declare function ɵɵinvalidFactory(): never;
13403
13404/**
13405 * Throws an error indicating that a factory function could not be generated by the compiler for a
13406 * particular class.
13407 *
13408 * This instruction allows the actual error message to be optimized away when ngDevMode is turned
13409 * off, saving bytes of generated code while still providing a good experience in dev mode.
13410 *
13411 * The name of the class is not mentioned here, but will be in the generated factory function name
13412 * and thus in the stack trace.
13413 *
13414 * @codeGenApi
13415 */
13416export declare function ɵɵinvalidFactoryDep(index: number): never;
13417
13418/**
13419 * Adds an event listener to the current node.
13420 *
13421 * If an output exists on one of the node's directives, it also subscribes to the output
13422 * and saves the subscription for later cleanup.
13423 *
13424 * @param eventName Name of the event
13425 * @param listenerFn The function to be called when event emits
13426 * @param useCapture Whether or not to use capture in event listener
13427 * @param eventTargetResolver Function that returns global target information in case this listener
13428 * should be attached to a global object like window, document or body
13429 *
13430 * @codeGenApi
13431 */
13432export declare function ɵɵlistener(eventName: string, listenerFn: (e?: any) => any, useCapture?: boolean, eventTargetResolver?: GlobalTargetResolver): typeof ɵɵlistener;
13433
13434/**
13435 * Loads a QueryList corresponding to the current view or content query.
13436 *
13437 * @codeGenApi
13438 */
13439export declare function ɵɵloadQuery<T>(): QueryList<T>;
13440
13441/**
13442 * Sets the namespace used to create elements to `null`, which forces element creation to use
13443 * `createElement` rather than `createElementNS`.
13444 *
13445 * @codeGenApi
13446 */
13447export declare function ɵɵnamespaceHTML(): void;
13448
13449/**
13450 * Sets the namespace used to create elements to `'http://www.w3.org/1998/MathML/'` in global state.
13451 *
13452 * @codeGenApi
13453 */
13454export declare function ɵɵnamespaceMathML(): void;
13455
13456/**
13457 * Sets the namespace used to create elements to `'http://www.w3.org/2000/svg'` in global state.
13458 *
13459 * @codeGenApi
13460 */
13461export declare function ɵɵnamespaceSVG(): void;
13462
13463/**
13464 * Retrieves a context at the level specified and saves it as the global, contextViewData.
13465 * Will get the next level up if level is not specified.
13466 *
13467 * This is used to save contexts of parent views so they can be bound in embedded views, or
13468 * in conjunction with reference() to bind a ref from a parent view.
13469 *
13470 * @param level The relative level of the view from which to grab context compared to contextVewData
13471 * @returns context
13472 *
13473 * @codeGenApi
13474 */
13475export declare function ɵɵnextContext<T = any>(level?: number): T;
13476
13477/**
13478 * Evaluates the class metadata declaration.
13479 *
13480 * @codeGenApi
13481 */
13482export declare function ɵɵngDeclareClassMetadata(decl: {
13483 type: Type<any>;
13484 decorators: any[];
13485 ctorParameters?: () => any[];
13486 propDecorators?: {
13487 [field: string]: any;
13488 };
13489}): void;
13490
13491/**
13492 * Compiles a partial component declaration object into a full component definition object.
13493 *
13494 * @codeGenApi
13495 */
13496export declare function ɵɵngDeclareComponent(decl: R3DeclareComponentFacade): unknown;
13497
13498/**
13499 * Compiles a partial directive declaration object into a full directive definition object.
13500 *
13501 * @codeGenApi
13502 */
13503export declare function ɵɵngDeclareDirective(decl: R3DeclareDirectiveFacade): unknown;
13504
13505/**
13506 * Compiles a partial pipe declaration object into a full pipe definition object.
13507 *
13508 * @codeGenApi
13509 */
13510export declare function ɵɵngDeclareFactory(decl: R3DeclareFactoryFacade): unknown;
13511
13512/**
13513 * Compiles a partial injectable declaration object into a full injectable definition object.
13514 *
13515 * @codeGenApi
13516 */
13517export declare function ɵɵngDeclareInjectable(decl: R3DeclareInjectableFacade): unknown;
13518
13519/**
13520 * Compiles a partial injector declaration object into a full injector definition object.
13521 *
13522 * @codeGenApi
13523 */
13524export declare function ɵɵngDeclareInjector(decl: R3DeclareInjectorFacade): unknown;
13525
13526/**
13527 * Compiles a partial NgModule declaration object into a full NgModule definition object.
13528 *
13529 * @codeGenApi
13530 */
13531export declare function ɵɵngDeclareNgModule(decl: R3DeclareNgModuleFacade): unknown;
13532
13533/**
13534 * Compiles a partial pipe declaration object into a full pipe definition object.
13535 *
13536 * @codeGenApi
13537 */
13538export declare function ɵɵngDeclarePipe(decl: R3DeclarePipeFacade): unknown;
13539
13540/**
13541 * @publicApi
13542 */
13543export declare type ɵɵNgModuleDeclaration<T, Declarations, Imports, Exports> = unknown;
13544
13545/**
13546 * The NgOnChangesFeature decorates a component with support for the ngOnChanges
13547 * lifecycle hook, so it should be included in any component that implements
13548 * that hook.
13549 *
13550 * If the component or directive uses inheritance, the NgOnChangesFeature MUST
13551 * be included as a feature AFTER {@link InheritDefinitionFeature}, otherwise
13552 * inherited properties will not be propagated to the ngOnChanges lifecycle
13553 * hook.
13554 *
13555 * Example usage:
13556 *
13557 * ```
13558 * static ɵcmp = defineComponent({
13559 * ...
13560 * inputs: {name: 'publicName'},
13561 * features: [NgOnChangesFeature]
13562 * });
13563 * ```
13564 *
13565 * @codeGenApi
13566 */
13567export declare function ɵɵNgOnChangesFeature<T>(): DirectiveDefFeature;
13568
13569
13570/**
13571 * Create a pipe.
13572 *
13573 * @param index Pipe index where the pipe will be stored.
13574 * @param pipeName The name of the pipe
13575 * @returns T the instance of the pipe.
13576 *
13577 * @codeGenApi
13578 */
13579export declare function ɵɵpipe(index: number, pipeName: string): any;
13580
13581/**
13582 * Invokes a pipe with 1 arguments.
13583 *
13584 * This instruction acts as a guard to {@link PipeTransform#transform} invoking
13585 * the pipe only when an input to the pipe changes.
13586 *
13587 * @param index Pipe index where the pipe was stored on creation.
13588 * @param slotOffset the offset in the reserved slot space
13589 * @param v1 1st argument to {@link PipeTransform#transform}.
13590 *
13591 * @codeGenApi
13592 */
13593export declare function ɵɵpipeBind1(index: number, slotOffset: number, v1: any): any;
13594
13595/**
13596 * Invokes a pipe with 2 arguments.
13597 *
13598 * This instruction acts as a guard to {@link PipeTransform#transform} invoking
13599 * the pipe only when an input to the pipe changes.
13600 *
13601 * @param index Pipe index where the pipe was stored on creation.
13602 * @param slotOffset the offset in the reserved slot space
13603 * @param v1 1st argument to {@link PipeTransform#transform}.
13604 * @param v2 2nd argument to {@link PipeTransform#transform}.
13605 *
13606 * @codeGenApi
13607 */
13608export declare function ɵɵpipeBind2(index: number, slotOffset: number, v1: any, v2: any): any;
13609
13610/**
13611 * Invokes a pipe with 3 arguments.
13612 *
13613 * This instruction acts as a guard to {@link PipeTransform#transform} invoking
13614 * the pipe only when an input to the pipe changes.
13615 *
13616 * @param index Pipe index where the pipe was stored on creation.
13617 * @param slotOffset the offset in the reserved slot space
13618 * @param v1 1st argument to {@link PipeTransform#transform}.
13619 * @param v2 2nd argument to {@link PipeTransform#transform}.
13620 * @param v3 4rd argument to {@link PipeTransform#transform}.
13621 *
13622 * @codeGenApi
13623 */
13624export declare function ɵɵpipeBind3(index: number, slotOffset: number, v1: any, v2: any, v3: any): any;
13625
13626/**
13627 * Invokes a pipe with 4 arguments.
13628 *
13629 * This instruction acts as a guard to {@link PipeTransform#transform} invoking
13630 * the pipe only when an input to the pipe changes.
13631 *
13632 * @param index Pipe index where the pipe was stored on creation.
13633 * @param slotOffset the offset in the reserved slot space
13634 * @param v1 1st argument to {@link PipeTransform#transform}.
13635 * @param v2 2nd argument to {@link PipeTransform#transform}.
13636 * @param v3 3rd argument to {@link PipeTransform#transform}.
13637 * @param v4 4th argument to {@link PipeTransform#transform}.
13638 *
13639 * @codeGenApi
13640 */
13641export declare function ɵɵpipeBind4(index: number, slotOffset: number, v1: any, v2: any, v3: any, v4: any): any;
13642
13643/**
13644 * Invokes a pipe with variable number of arguments.
13645 *
13646 * This instruction acts as a guard to {@link PipeTransform#transform} invoking
13647 * the pipe only when an input to the pipe changes.
13648 *
13649 * @param index Pipe index where the pipe was stored on creation.
13650 * @param slotOffset the offset in the reserved slot space
13651 * @param values Array of arguments to pass to {@link PipeTransform#transform} method.
13652 *
13653 * @codeGenApi
13654 */
13655export declare function ɵɵpipeBindV(index: number, slotOffset: number, values: [any, ...any[]]): any;
13656
13657/**
13658 * @publicApi
13659 */
13660export declare type ɵɵPipeDeclaration<T, Name extends string> = unknown;
13661
13662/**
13663 * Inserts previously re-distributed projected nodes. This instruction must be preceded by a call
13664 * to the projectionDef instruction.
13665 *
13666 * @param nodeIndex
13667 * @param selectorIndex:
13668 * - 0 when the selector is `*` (or unspecified as this is the default value),
13669 * - 1 based index of the selector from the {@link projectionDef}
13670 *
13671 * @codeGenApi
13672 */
13673export declare function ɵɵprojection(nodeIndex: number, selectorIndex?: number, attrs?: TAttributes): void;
13674
13675/**
13676 * Instruction to distribute projectable nodes among <ng-content> occurrences in a given template.
13677 * It takes all the selectors from the entire component's template and decides where
13678 * each projected node belongs (it re-distributes nodes among "buckets" where each "bucket" is
13679 * backed by a selector).
13680 *
13681 * This function requires CSS selectors to be provided in 2 forms: parsed (by a compiler) and text,
13682 * un-parsed form.
13683 *
13684 * The parsed form is needed for efficient matching of a node against a given CSS selector.
13685 * The un-parsed, textual form is needed for support of the ngProjectAs attribute.
13686 *
13687 * Having a CSS selector in 2 different formats is not ideal, but alternatives have even more
13688 * drawbacks:
13689 * - having only a textual form would require runtime parsing of CSS selectors;
13690 * - we can't have only a parsed as we can't re-construct textual form from it (as entered by a
13691 * template author).
13692 *
13693 * @param projectionSlots? A collection of projection slots. A projection slot can be based
13694 * on a parsed CSS selectors or set to the wildcard selector ("*") in order to match
13695 * all nodes which do not match any selector. If not specified, a single wildcard
13696 * selector projection slot will be defined.
13697 *
13698 * @codeGenApi
13699 */
13700export declare function ɵɵprojectionDef(projectionSlots?: ProjectionSlots): void;
13701
13702/**
13703 * Update a property on a selected element.
13704 *
13705 * Operates on the element selected by index via the {@link select} instruction.
13706 *
13707 * If the property name also exists as an input property on one of the element's directives,
13708 * the component property will be set instead of the element property. This check must
13709 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled
13710 *
13711 * @param propName Name of property. Because it is going to DOM, this is not subject to
13712 * renaming as part of minification.
13713 * @param value New value to write.
13714 * @param sanitizer An optional function used to sanitize the value.
13715 * @returns This function returns itself so that it may be chained
13716 * (e.g. `property('name', ctx.name)('title', ctx.title)`)
13717 *
13718 * @codeGenApi
13719 */
13720export declare function ɵɵproperty<T>(propName: string, value: T, sanitizer?: SanitizerFn | null): typeof ɵɵproperty;
13721
13722/**
13723 *
13724 * Update an interpolated property on an element with a lone bound value
13725 *
13726 * Used when the value passed to a property has 1 interpolated value in it, an no additional text
13727 * surrounds that interpolated value:
13728 *
13729 * ```html
13730 * <div title="{{v0}}"></div>
13731 * ```
13732 *
13733 * Its compiled representation is::
13734 *
13735 * ```ts
13736 * ɵɵpropertyInterpolate('title', v0);
13737 * ```
13738 *
13739 * If the property name also exists as an input property on one of the element's directives,
13740 * the component property will be set instead of the element property. This check must
13741 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
13742 *
13743 * @param propName The name of the property to update
13744 * @param prefix Static value used for concatenation only.
13745 * @param v0 Value checked for change.
13746 * @param suffix Static value used for concatenation only.
13747 * @param sanitizer An optional sanitizer function
13748 * @returns itself, so that it may be chained.
13749 * @codeGenApi
13750 */
13751export declare function ɵɵpropertyInterpolate(propName: string, v0: any, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate;
13752
13753/**
13754 *
13755 * Update an interpolated property on an element with single bound value surrounded by text.
13756 *
13757 * Used when the value passed to a property has 1 interpolated value in it:
13758 *
13759 * ```html
13760 * <div title="prefix{{v0}}suffix"></div>
13761 * ```
13762 *
13763 * Its compiled representation is::
13764 *
13765 * ```ts
13766 * ɵɵpropertyInterpolate1('title', 'prefix', v0, 'suffix');
13767 * ```
13768 *
13769 * If the property name also exists as an input property on one of the element's directives,
13770 * the component property will be set instead of the element property. This check must
13771 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
13772 *
13773 * @param propName The name of the property to update
13774 * @param prefix Static value used for concatenation only.
13775 * @param v0 Value checked for change.
13776 * @param suffix Static value used for concatenation only.
13777 * @param sanitizer An optional sanitizer function
13778 * @returns itself, so that it may be chained.
13779 * @codeGenApi
13780 */
13781export declare function ɵɵpropertyInterpolate1(propName: string, prefix: string, v0: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate1;
13782
13783/**
13784 *
13785 * Update an interpolated property on an element with 2 bound values surrounded by text.
13786 *
13787 * Used when the value passed to a property has 2 interpolated values in it:
13788 *
13789 * ```html
13790 * <div title="prefix{{v0}}-{{v1}}suffix"></div>
13791 * ```
13792 *
13793 * Its compiled representation is::
13794 *
13795 * ```ts
13796 * ɵɵpropertyInterpolate2('title', 'prefix', v0, '-', v1, 'suffix');
13797 * ```
13798 *
13799 * If the property name also exists as an input property on one of the element's directives,
13800 * the component property will be set instead of the element property. This check must
13801 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
13802 *
13803 * @param propName The name of the property to update
13804 * @param prefix Static value used for concatenation only.
13805 * @param v0 Value checked for change.
13806 * @param i0 Static value used for concatenation only.
13807 * @param v1 Value checked for change.
13808 * @param suffix Static value used for concatenation only.
13809 * @param sanitizer An optional sanitizer function
13810 * @returns itself, so that it may be chained.
13811 * @codeGenApi
13812 */
13813export declare function ɵɵpropertyInterpolate2(propName: string, prefix: string, v0: any, i0: string, v1: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate2;
13814
13815/**
13816 *
13817 * Update an interpolated property on an element with 3 bound values surrounded by text.
13818 *
13819 * Used when the value passed to a property has 3 interpolated values in it:
13820 *
13821 * ```html
13822 * <div title="prefix{{v0}}-{{v1}}-{{v2}}suffix"></div>
13823 * ```
13824 *
13825 * Its compiled representation is::
13826 *
13827 * ```ts
13828 * ɵɵpropertyInterpolate3(
13829 * 'title', 'prefix', v0, '-', v1, '-', v2, 'suffix');
13830 * ```
13831 *
13832 * If the property name also exists as an input property on one of the element's directives,
13833 * the component property will be set instead of the element property. This check must
13834 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
13835 *
13836 * @param propName The name of the property to update
13837 * @param prefix Static value used for concatenation only.
13838 * @param v0 Value checked for change.
13839 * @param i0 Static value used for concatenation only.
13840 * @param v1 Value checked for change.
13841 * @param i1 Static value used for concatenation only.
13842 * @param v2 Value checked for change.
13843 * @param suffix Static value used for concatenation only.
13844 * @param sanitizer An optional sanitizer function
13845 * @returns itself, so that it may be chained.
13846 * @codeGenApi
13847 */
13848export declare function ɵɵpropertyInterpolate3(propName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate3;
13849
13850/**
13851 *
13852 * Update an interpolated property on an element with 4 bound values surrounded by text.
13853 *
13854 * Used when the value passed to a property has 4 interpolated values in it:
13855 *
13856 * ```html
13857 * <div title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix"></div>
13858 * ```
13859 *
13860 * Its compiled representation is::
13861 *
13862 * ```ts
13863 * ɵɵpropertyInterpolate4(
13864 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');
13865 * ```
13866 *
13867 * If the property name also exists as an input property on one of the element's directives,
13868 * the component property will be set instead of the element property. This check must
13869 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
13870 *
13871 * @param propName The name of the property to update
13872 * @param prefix Static value used for concatenation only.
13873 * @param v0 Value checked for change.
13874 * @param i0 Static value used for concatenation only.
13875 * @param v1 Value checked for change.
13876 * @param i1 Static value used for concatenation only.
13877 * @param v2 Value checked for change.
13878 * @param i2 Static value used for concatenation only.
13879 * @param v3 Value checked for change.
13880 * @param suffix Static value used for concatenation only.
13881 * @param sanitizer An optional sanitizer function
13882 * @returns itself, so that it may be chained.
13883 * @codeGenApi
13884 */
13885export declare function ɵɵpropertyInterpolate4(propName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate4;
13886
13887/**
13888 *
13889 * Update an interpolated property on an element with 5 bound values surrounded by text.
13890 *
13891 * Used when the value passed to a property has 5 interpolated values in it:
13892 *
13893 * ```html
13894 * <div title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix"></div>
13895 * ```
13896 *
13897 * Its compiled representation is::
13898 *
13899 * ```ts
13900 * ɵɵpropertyInterpolate5(
13901 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');
13902 * ```
13903 *
13904 * If the property name also exists as an input property on one of the element's directives,
13905 * the component property will be set instead of the element property. This check must
13906 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
13907 *
13908 * @param propName The name of the property to update
13909 * @param prefix Static value used for concatenation only.
13910 * @param v0 Value checked for change.
13911 * @param i0 Static value used for concatenation only.
13912 * @param v1 Value checked for change.
13913 * @param i1 Static value used for concatenation only.
13914 * @param v2 Value checked for change.
13915 * @param i2 Static value used for concatenation only.
13916 * @param v3 Value checked for change.
13917 * @param i3 Static value used for concatenation only.
13918 * @param v4 Value checked for change.
13919 * @param suffix Static value used for concatenation only.
13920 * @param sanitizer An optional sanitizer function
13921 * @returns itself, so that it may be chained.
13922 * @codeGenApi
13923 */
13924export declare function ɵɵpropertyInterpolate5(propName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate5;
13925
13926/**
13927 *
13928 * Update an interpolated property on an element with 6 bound values surrounded by text.
13929 *
13930 * Used when the value passed to a property has 6 interpolated values in it:
13931 *
13932 * ```html
13933 * <div title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix"></div>
13934 * ```
13935 *
13936 * Its compiled representation is::
13937 *
13938 * ```ts
13939 * ɵɵpropertyInterpolate6(
13940 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');
13941 * ```
13942 *
13943 * If the property name also exists as an input property on one of the element's directives,
13944 * the component property will be set instead of the element property. This check must
13945 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
13946 *
13947 * @param propName The name of the property to update
13948 * @param prefix Static value used for concatenation only.
13949 * @param v0 Value checked for change.
13950 * @param i0 Static value used for concatenation only.
13951 * @param v1 Value checked for change.
13952 * @param i1 Static value used for concatenation only.
13953 * @param v2 Value checked for change.
13954 * @param i2 Static value used for concatenation only.
13955 * @param v3 Value checked for change.
13956 * @param i3 Static value used for concatenation only.
13957 * @param v4 Value checked for change.
13958 * @param i4 Static value used for concatenation only.
13959 * @param v5 Value checked for change.
13960 * @param suffix Static value used for concatenation only.
13961 * @param sanitizer An optional sanitizer function
13962 * @returns itself, so that it may be chained.
13963 * @codeGenApi
13964 */
13965export declare function ɵɵpropertyInterpolate6(propName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate6;
13966
13967/**
13968 *
13969 * Update an interpolated property on an element with 7 bound values surrounded by text.
13970 *
13971 * Used when the value passed to a property has 7 interpolated values in it:
13972 *
13973 * ```html
13974 * <div title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix"></div>
13975 * ```
13976 *
13977 * Its compiled representation is::
13978 *
13979 * ```ts
13980 * ɵɵpropertyInterpolate7(
13981 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix');
13982 * ```
13983 *
13984 * If the property name also exists as an input property on one of the element's directives,
13985 * the component property will be set instead of the element property. This check must
13986 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
13987 *
13988 * @param propName The name of the property to update
13989 * @param prefix Static value used for concatenation only.
13990 * @param v0 Value checked for change.
13991 * @param i0 Static value used for concatenation only.
13992 * @param v1 Value checked for change.
13993 * @param i1 Static value used for concatenation only.
13994 * @param v2 Value checked for change.
13995 * @param i2 Static value used for concatenation only.
13996 * @param v3 Value checked for change.
13997 * @param i3 Static value used for concatenation only.
13998 * @param v4 Value checked for change.
13999 * @param i4 Static value used for concatenation only.
14000 * @param v5 Value checked for change.
14001 * @param i5 Static value used for concatenation only.
14002 * @param v6 Value checked for change.
14003 * @param suffix Static value used for concatenation only.
14004 * @param sanitizer An optional sanitizer function
14005 * @returns itself, so that it may be chained.
14006 * @codeGenApi
14007 */
14008export declare function ɵɵpropertyInterpolate7(propName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate7;
14009
14010/**
14011 *
14012 * Update an interpolated property on an element with 8 bound values surrounded by text.
14013 *
14014 * Used when the value passed to a property has 8 interpolated values in it:
14015 *
14016 * ```html
14017 * <div title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix"></div>
14018 * ```
14019 *
14020 * Its compiled representation is::
14021 *
14022 * ```ts
14023 * ɵɵpropertyInterpolate8(
14024 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, 'suffix');
14025 * ```
14026 *
14027 * If the property name also exists as an input property on one of the element's directives,
14028 * the component property will be set instead of the element property. This check must
14029 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
14030 *
14031 * @param propName The name of the property to update
14032 * @param prefix Static value used for concatenation only.
14033 * @param v0 Value checked for change.
14034 * @param i0 Static value used for concatenation only.
14035 * @param v1 Value checked for change.
14036 * @param i1 Static value used for concatenation only.
14037 * @param v2 Value checked for change.
14038 * @param i2 Static value used for concatenation only.
14039 * @param v3 Value checked for change.
14040 * @param i3 Static value used for concatenation only.
14041 * @param v4 Value checked for change.
14042 * @param i4 Static value used for concatenation only.
14043 * @param v5 Value checked for change.
14044 * @param i5 Static value used for concatenation only.
14045 * @param v6 Value checked for change.
14046 * @param i6 Static value used for concatenation only.
14047 * @param v7 Value checked for change.
14048 * @param suffix Static value used for concatenation only.
14049 * @param sanitizer An optional sanitizer function
14050 * @returns itself, so that it may be chained.
14051 * @codeGenApi
14052 */
14053export declare function ɵɵpropertyInterpolate8(propName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, i6: string, v7: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate8;
14054
14055/**
14056 * Update an interpolated property on an element with 9 or more bound values surrounded by text.
14057 *
14058 * Used when the number of interpolated values exceeds 8.
14059 *
14060 * ```html
14061 * <div
14062 * title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix"></div>
14063 * ```
14064 *
14065 * Its compiled representation is::
14066 *
14067 * ```ts
14068 * ɵɵpropertyInterpolateV(
14069 * 'title', ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9,
14070 * 'suffix']);
14071 * ```
14072 *
14073 * If the property name also exists as an input property on one of the element's directives,
14074 * the component property will be set instead of the element property. This check must
14075 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
14076 *
14077 * @param propName The name of the property to update.
14078 * @param values The collection of values and the strings inbetween those values, beginning with a
14079 * string prefix and ending with a string suffix.
14080 * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)
14081 * @param sanitizer An optional sanitizer function
14082 * @returns itself, so that it may be chained.
14083 * @codeGenApi
14084 */
14085export declare function ɵɵpropertyInterpolateV(propName: string, values: any[], sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolateV;
14086
14087/**
14088 * This feature resolves the providers of a directive (or component),
14089 * and publish them into the DI system, making it visible to others for injection.
14090 *
14091 * For example:
14092 * ```ts
14093 * class ComponentWithProviders {
14094 * constructor(private greeter: GreeterDE) {}
14095 *
14096 * static ɵcmp = defineComponent({
14097 * type: ComponentWithProviders,
14098 * selectors: [['component-with-providers']],
14099 * factory: () => new ComponentWithProviders(directiveInject(GreeterDE as any)),
14100 * decls: 1,
14101 * vars: 1,
14102 * template: function(fs: RenderFlags, ctx: ComponentWithProviders) {
14103 * if (fs & RenderFlags.Create) {
14104 * ɵɵtext(0);
14105 * }
14106 * if (fs & RenderFlags.Update) {
14107 * ɵɵtextInterpolate(ctx.greeter.greet());
14108 * }
14109 * },
14110 * features: [ɵɵProvidersFeature([GreeterDE])]
14111 * });
14112 * }
14113 * ```
14114 *
14115 * @param definition
14116 *
14117 * @codeGenApi
14118 */
14119export declare function ɵɵProvidersFeature<T>(providers: Provider[], viewProviders?: Provider[]): (definition: ɵDirectiveDef<T>) => void;
14120
14121/**
14122 * Bindings for pure functions are stored after regular bindings.
14123 *
14124 * |-------decls------|---------vars---------| |----- hostVars (dir1) ------|
14125 * ------------------------------------------------------------------------------------------
14126 * | nodes/refs/pipes | bindings | fn slots | injector | dir1 | host bindings | host slots |
14127 * ------------------------------------------------------------------------------------------
14128 * ^ ^
14129 * TView.bindingStartIndex TView.expandoStartIndex
14130 *
14131 * Pure function instructions are given an offset from the binding root. Adding the offset to the
14132 * binding root gives the first index where the bindings are stored. In component views, the binding
14133 * root is the bindingStartIndex. In host bindings, the binding root is the expandoStartIndex +
14134 * any directive instances + any hostVars in directives evaluated before it.
14135 *
14136 * See VIEW_DATA.md for more information about host binding resolution.
14137 */
14138/**
14139 * If the value hasn't been saved, calls the pure function to store and return the
14140 * value. If it has been saved, returns the saved value.
14141 *
14142 * @param slotOffset the offset from binding root to the reserved slot
14143 * @param pureFn Function that returns a value
14144 * @param thisArg Optional calling context of pureFn
14145 * @returns value
14146 *
14147 * @codeGenApi
14148 */
14149export declare function ɵɵpureFunction0<T>(slotOffset: number, pureFn: () => T, thisArg?: any): T;
14150
14151/**
14152 * If the value of the provided exp has changed, calls the pure function to return
14153 * an updated value. Or if the value has not changed, returns cached value.
14154 *
14155 * @param slotOffset the offset from binding root to the reserved slot
14156 * @param pureFn Function that returns an updated value
14157 * @param exp Updated expression value
14158 * @param thisArg Optional calling context of pureFn
14159 * @returns Updated or cached value
14160 *
14161 * @codeGenApi
14162 */
14163export declare function ɵɵpureFunction1(slotOffset: number, pureFn: (v: any) => any, exp: any, thisArg?: any): any;
14164
14165/**
14166 * If the value of any provided exp has changed, calls the pure function to return
14167 * an updated value. Or if no values have changed, returns cached value.
14168 *
14169 * @param slotOffset the offset from binding root to the reserved slot
14170 * @param pureFn
14171 * @param exp1
14172 * @param exp2
14173 * @param thisArg Optional calling context of pureFn
14174 * @returns Updated or cached value
14175 *
14176 * @codeGenApi
14177 */
14178export declare function ɵɵpureFunction2(slotOffset: number, pureFn: (v1: any, v2: any) => any, exp1: any, exp2: any, thisArg?: any): any;
14179
14180/**
14181 * If the value of any provided exp has changed, calls the pure function to return
14182 * an updated value. Or if no values have changed, returns cached value.
14183 *
14184 * @param slotOffset the offset from binding root to the reserved slot
14185 * @param pureFn
14186 * @param exp1
14187 * @param exp2
14188 * @param exp3
14189 * @param thisArg Optional calling context of pureFn
14190 * @returns Updated or cached value
14191 *
14192 * @codeGenApi
14193 */
14194export declare function ɵɵpureFunction3(slotOffset: number, pureFn: (v1: any, v2: any, v3: any) => any, exp1: any, exp2: any, exp3: any, thisArg?: any): any;
14195
14196/**
14197 * If the value of any provided exp has changed, calls the pure function to return
14198 * an updated value. Or if no values have changed, returns cached value.
14199 *
14200 * @param slotOffset the offset from binding root to the reserved slot
14201 * @param pureFn
14202 * @param exp1
14203 * @param exp2
14204 * @param exp3
14205 * @param exp4
14206 * @param thisArg Optional calling context of pureFn
14207 * @returns Updated or cached value
14208 *
14209 * @codeGenApi
14210 */
14211export declare function ɵɵpureFunction4(slotOffset: number, pureFn: (v1: any, v2: any, v3: any, v4: any) => any, exp1: any, exp2: any, exp3: any, exp4: any, thisArg?: any): any;
14212
14213/**
14214 * If the value of any provided exp has changed, calls the pure function to return
14215 * an updated value. Or if no values have changed, returns cached value.
14216 *
14217 * @param slotOffset the offset from binding root to the reserved slot
14218 * @param pureFn
14219 * @param exp1
14220 * @param exp2
14221 * @param exp3
14222 * @param exp4
14223 * @param exp5
14224 * @param thisArg Optional calling context of pureFn
14225 * @returns Updated or cached value
14226 *
14227 * @codeGenApi
14228 */
14229export declare function ɵɵpureFunction5(slotOffset: number, pureFn: (v1: any, v2: any, v3: any, v4: any, v5: any) => any, exp1: any, exp2: any, exp3: any, exp4: any, exp5: any, thisArg?: any): any;
14230
14231/**
14232 * If the value of any provided exp has changed, calls the pure function to return
14233 * an updated value. Or if no values have changed, returns cached value.
14234 *
14235 * @param slotOffset the offset from binding root to the reserved slot
14236 * @param pureFn
14237 * @param exp1
14238 * @param exp2
14239 * @param exp3
14240 * @param exp4
14241 * @param exp5
14242 * @param exp6
14243 * @param thisArg Optional calling context of pureFn
14244 * @returns Updated or cached value
14245 *
14246 * @codeGenApi
14247 */
14248export declare function ɵɵpureFunction6(slotOffset: number, pureFn: (v1: any, v2: any, v3: any, v4: any, v5: any, v6: any) => any, exp1: any, exp2: any, exp3: any, exp4: any, exp5: any, exp6: any, thisArg?: any): any;
14249
14250/**
14251 * If the value of any provided exp has changed, calls the pure function to return
14252 * an updated value. Or if no values have changed, returns cached value.
14253 *
14254 * @param slotOffset the offset from binding root to the reserved slot
14255 * @param pureFn
14256 * @param exp1
14257 * @param exp2
14258 * @param exp3
14259 * @param exp4
14260 * @param exp5
14261 * @param exp6
14262 * @param exp7
14263 * @param thisArg Optional calling context of pureFn
14264 * @returns Updated or cached value
14265 *
14266 * @codeGenApi
14267 */
14268export declare function ɵɵpureFunction7(slotOffset: number, pureFn: (v1: any, v2: any, v3: any, v4: any, v5: any, v6: any, v7: any) => any, exp1: any, exp2: any, exp3: any, exp4: any, exp5: any, exp6: any, exp7: any, thisArg?: any): any;
14269
14270/**
14271 * If the value of any provided exp has changed, calls the pure function to return
14272 * an updated value. Or if no values have changed, returns cached value.
14273 *
14274 * @param slotOffset the offset from binding root to the reserved slot
14275 * @param pureFn
14276 * @param exp1
14277 * @param exp2
14278 * @param exp3
14279 * @param exp4
14280 * @param exp5
14281 * @param exp6
14282 * @param exp7
14283 * @param exp8
14284 * @param thisArg Optional calling context of pureFn
14285 * @returns Updated or cached value
14286 *
14287 * @codeGenApi
14288 */
14289export declare function ɵɵpureFunction8(slotOffset: number, pureFn: (v1: any, v2: any, v3: any, v4: any, v5: any, v6: any, v7: any, v8: any) => any, exp1: any, exp2: any, exp3: any, exp4: any, exp5: any, exp6: any, exp7: any, exp8: any, thisArg?: any): any;
14290
14291/**
14292 * pureFunction instruction that can support any number of bindings.
14293 *
14294 * If the value of any provided exp has changed, calls the pure function to return
14295 * an updated value. Or if no values have changed, returns cached value.
14296 *
14297 * @param slotOffset the offset from binding root to the reserved slot
14298 * @param pureFn A pure function that takes binding values and builds an object or array
14299 * containing those values.
14300 * @param exps An array of binding values
14301 * @param thisArg Optional calling context of pureFn
14302 * @returns Updated or cached value
14303 *
14304 * @codeGenApi
14305 */
14306export declare function ɵɵpureFunctionV(slotOffset: number, pureFn: (...v: any[]) => any, exps: any[], thisArg?: any): any;
14307
14308/**
14309 * Refreshes a query by combining matches from all active views and removing matches from deleted
14310 * views.
14311 *
14312 * @returns `true` if a query got dirty during change detection or if this is a static query
14313 * resolving in creation mode, `false` otherwise.
14314 *
14315 * @codeGenApi
14316 */
14317export declare function ɵɵqueryRefresh(queryList: QueryList<any>): boolean;
14318
14319/**
14320 * Retrieves a local reference from the current contextViewData.
14321 *
14322 * If the reference to retrieve is in a parent view, this instruction is used in conjunction
14323 * with a nextContext() call, which walks up the tree and updates the contextViewData instance.
14324 *
14325 * @param index The index of the local ref in contextViewData.
14326 *
14327 * @codeGenApi
14328 */
14329export declare function ɵɵreference<T>(index: number): T;
14330
14331/**
14332 *
14333 * @codeGenApi
14334 */
14335export declare function ɵɵresolveBody(element: RElement & {
14336 ownerDocument: Document;
14337}): HTMLElement;
14338
14339/**
14340 *
14341 * @codeGenApi
14342 */
14343export declare function ɵɵresolveDocument(element: RElement & {
14344 ownerDocument: Document;
14345}): Document;
14346
14347/**
14348 *
14349 * @codeGenApi
14350 */
14351export declare function ɵɵresolveWindow(element: RElement & {
14352 ownerDocument: Document;
14353}): (Window & typeof globalThis) | null;
14354
14355/**
14356 * Restores `contextViewData` to the given OpaqueViewState instance.
14357 *
14358 * Used in conjunction with the getCurrentView() instruction to save a snapshot
14359 * of the current view and restore it when listeners are invoked. This allows
14360 * walking the declaration view tree in listeners to get vars from parent views.
14361 *
14362 * @param viewToRestore The OpaqueViewState instance to restore.
14363 * @returns Context of the restored OpaqueViewState instance.
14364 *
14365 * @codeGenApi
14366 */
14367export declare function ɵɵrestoreView<T = any>(viewToRestore: OpaqueViewState): T;
14368
14369/**
14370 * An `html` sanitizer which converts untrusted `html` **string** into trusted string by removing
14371 * dangerous content.
14372 *
14373 * This method parses the `html` and locates potentially dangerous content (such as urls and
14374 * javascript) and removes it.
14375 *
14376 * It is possible to mark a string as trusted by calling {@link bypassSanitizationTrustHtml}.
14377 *
14378 * @param unsafeHtml untrusted `html`, typically from the user.
14379 * @returns `html` string which is safe to display to user, because all of the dangerous javascript
14380 * and urls have been removed.
14381 *
14382 * @codeGenApi
14383 */
14384export declare function ɵɵsanitizeHtml(unsafeHtml: any): TrustedHTML | string;
14385
14386/**
14387 * A `url` sanitizer which only lets trusted `url`s through.
14388 *
14389 * This passes only `url`s marked trusted by calling {@link bypassSanitizationTrustResourceUrl}.
14390 *
14391 * @param unsafeResourceUrl untrusted `url`, typically from the user.
14392 * @returns `url` string which is safe to bind to the `src` properties such as `<img src>`, because
14393 * only trusted `url`s have been allowed to pass.
14394 *
14395 * @codeGenApi
14396 */
14397export declare function ɵɵsanitizeResourceUrl(unsafeResourceUrl: any): TrustedScriptURL | string;
14398
14399/**
14400 * A `script` sanitizer which only lets trusted javascript through.
14401 *
14402 * This passes only `script`s marked trusted by calling {@link
14403 * bypassSanitizationTrustScript}.
14404 *
14405 * @param unsafeScript untrusted `script`, typically from the user.
14406 * @returns `url` string which is safe to bind to the `<script>` element such as `<img src>`,
14407 * because only trusted `scripts` have been allowed to pass.
14408 *
14409 * @codeGenApi
14410 */
14411export declare function ɵɵsanitizeScript(unsafeScript: any): TrustedScript | string;
14412
14413/**
14414 * A `style` sanitizer which converts untrusted `style` **string** into trusted string by removing
14415 * dangerous content.
14416 *
14417 * It is possible to mark a string as trusted by calling {@link bypassSanitizationTrustStyle}.
14418 *
14419 * @param unsafeStyle untrusted `style`, typically from the user.
14420 * @returns `style` string which is safe to bind to the `style` properties.
14421 *
14422 * @codeGenApi
14423 */
14424export declare function ɵɵsanitizeStyle(unsafeStyle: any): string;
14425
14426/**
14427 * A `url` sanitizer which converts untrusted `url` **string** into trusted string by removing
14428 * dangerous
14429 * content.
14430 *
14431 * This method parses the `url` and locates potentially dangerous content (such as javascript) and
14432 * removes it.
14433 *
14434 * It is possible to mark a string as trusted by calling {@link bypassSanitizationTrustUrl}.
14435 *
14436 * @param unsafeUrl untrusted `url`, typically from the user.
14437 * @returns `url` string which is safe to bind to the `src` properties such as `<img src>`, because
14438 * all of the dangerous javascript has been removed.
14439 *
14440 * @codeGenApi
14441 */
14442export declare function ɵɵsanitizeUrl(unsafeUrl: any): string;
14443
14444/**
14445 * Sanitizes URL, selecting sanitizer function based on tag and property names.
14446 *
14447 * This function is used in case we can't define security context at compile time, when only prop
14448 * name is available. This happens when we generate host bindings for Directives/Components. The
14449 * host element is unknown at compile time, so we defer calculation of specific sanitizer to
14450 * runtime.
14451 *
14452 * @param unsafeUrl untrusted `url`, typically from the user.
14453 * @param tag target element tag name.
14454 * @param prop name of the property that contains the value.
14455 * @returns `url` string which is safe to bind.
14456 *
14457 * @codeGenApi
14458 */
14459export declare function ɵɵsanitizeUrlOrResourceUrl(unsafeUrl: any, tag: string, prop: string): any;
14460
14461/**
14462 * Generated next to NgModules to monkey-patch directive and pipe references onto a component's
14463 * definition, when generating a direct reference in the component file would otherwise create an
14464 * import cycle.
14465 *
14466 * See [this explanation](https://hackmd.io/Odw80D0pR6yfsOjg_7XCJg?view) for more details.
14467 *
14468 * @codeGenApi
14469 */
14470export declare function ɵɵsetComponentScope(type: ɵComponentType<any>, directives: Type<any>[], pipes: Type<any>[]): void;
14471
14472/**
14473 * Adds the module metadata that is necessary to compute the module's transitive scope to an
14474 * existing module definition.
14475 *
14476 * Scope metadata of modules is not used in production builds, so calls to this function can be
14477 * marked pure to tree-shake it from the bundle, allowing for all referenced declarations
14478 * to become eligible for tree-shaking as well.
14479 *
14480 * @codeGenApi
14481 */
14482export declare function ɵɵsetNgModuleScope(type: any, scope: {
14483 /** List of components, directives, and pipes declared by this module. */
14484 declarations?: Type<any>[] | (() => Type<any>[]);
14485 /** List of modules or `ModuleWithProviders` imported by this module. */
14486 imports?: Type<any>[] | (() => Type<any>[]);
14487 /**
14488 * List of modules, `ModuleWithProviders`, components, directives, or pipes exported by this
14489 * module.
14490 */
14491 exports?: Type<any>[] | (() => Type<any>[]);
14492}): unknown;
14493
14494/**
14495 * Update style bindings using an object literal on an element.
14496 *
14497 * This instruction is meant to apply styling via the `[style]="exp"` template bindings.
14498 * When styles are applied to the element they will then be updated with respect to
14499 * any styles/classes set via `styleProp`. If any styles are set to falsy
14500 * then they will be removed from the element.
14501 *
14502 * Note that the styling instruction will not be applied until `stylingApply` is called.
14503 *
14504 * @param styles A key/value style map of the styles that will be applied to the given element.
14505 * Any missing styles (that have already been applied to the element beforehand) will be
14506 * removed (unset) from the element's styling.
14507 *
14508 * Note that this will apply the provided styleMap value to the host element if this function
14509 * is called within a host binding.
14510 *
14511 * @codeGenApi
14512 */
14513export declare function ɵɵstyleMap(styles: {
14514 [styleName: string]: any;
14515} | string | undefined | null): void;
14516
14517
14518/**
14519 *
14520 * Update an interpolated style on an element with single bound value surrounded by text.
14521 *
14522 * Used when the value passed to a property has 1 interpolated value in it:
14523 *
14524 * ```html
14525 * <div style="key: {{v0}}suffix"></div>
14526 * ```
14527 *
14528 * Its compiled representation is:
14529 *
14530 * ```ts
14531 * ɵɵstyleMapInterpolate1('key: ', v0, 'suffix');
14532 * ```
14533 *
14534 * @param prefix Static value used for concatenation only.
14535 * @param v0 Value checked for change.
14536 * @param suffix Static value used for concatenation only.
14537 * @codeGenApi
14538 */
14539export declare function ɵɵstyleMapInterpolate1(prefix: string, v0: any, suffix: string): void;
14540
14541/**
14542 *
14543 * Update an interpolated style on an element with 2 bound values surrounded by text.
14544 *
14545 * Used when the value passed to a property has 2 interpolated values in it:
14546 *
14547 * ```html
14548 * <div style="key: {{v0}}; key1: {{v1}}suffix"></div>
14549 * ```
14550 *
14551 * Its compiled representation is:
14552 *
14553 * ```ts
14554 * ɵɵstyleMapInterpolate2('key: ', v0, '; key1: ', v1, 'suffix');
14555 * ```
14556 *
14557 * @param prefix Static value used for concatenation only.
14558 * @param v0 Value checked for change.
14559 * @param i0 Static value used for concatenation only.
14560 * @param v1 Value checked for change.
14561 * @param suffix Static value used for concatenation only.
14562 * @codeGenApi
14563 */
14564export declare function ɵɵstyleMapInterpolate2(prefix: string, v0: any, i0: string, v1: any, suffix: string): void;
14565
14566/**
14567 *
14568 * Update an interpolated style on an element with 3 bound values surrounded by text.
14569 *
14570 * Used when the value passed to a property has 3 interpolated values in it:
14571 *
14572 * ```html
14573 * <div style="key: {{v0}}; key2: {{v1}}; key2: {{v2}}suffix"></div>
14574 * ```
14575 *
14576 * Its compiled representation is:
14577 *
14578 * ```ts
14579 * ɵɵstyleMapInterpolate3(
14580 * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, 'suffix');
14581 * ```
14582 *
14583 * @param prefix Static value used for concatenation only.
14584 * @param v0 Value checked for change.
14585 * @param i0 Static value used for concatenation only.
14586 * @param v1 Value checked for change.
14587 * @param i1 Static value used for concatenation only.
14588 * @param v2 Value checked for change.
14589 * @param suffix Static value used for concatenation only.
14590 * @codeGenApi
14591 */
14592export declare function ɵɵstyleMapInterpolate3(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string): void;
14593
14594/**
14595 *
14596 * Update an interpolated style on an element with 4 bound values surrounded by text.
14597 *
14598 * Used when the value passed to a property has 4 interpolated values in it:
14599 *
14600 * ```html
14601 * <div style="key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}suffix"></div>
14602 * ```
14603 *
14604 * Its compiled representation is:
14605 *
14606 * ```ts
14607 * ɵɵstyleMapInterpolate4(
14608 * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, 'suffix');
14609 * ```
14610 *
14611 * @param prefix Static value used for concatenation only.
14612 * @param v0 Value checked for change.
14613 * @param i0 Static value used for concatenation only.
14614 * @param v1 Value checked for change.
14615 * @param i1 Static value used for concatenation only.
14616 * @param v2 Value checked for change.
14617 * @param i2 Static value used for concatenation only.
14618 * @param v3 Value checked for change.
14619 * @param suffix Static value used for concatenation only.
14620 * @codeGenApi
14621 */
14622export declare function ɵɵstyleMapInterpolate4(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, suffix: string): void;
14623
14624/**
14625 *
14626 * Update an interpolated style on an element with 5 bound values surrounded by text.
14627 *
14628 * Used when the value passed to a property has 5 interpolated values in it:
14629 *
14630 * ```html
14631 * <div style="key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}; key4: {{v4}}suffix"></div>
14632 * ```
14633 *
14634 * Its compiled representation is:
14635 *
14636 * ```ts
14637 * ɵɵstyleMapInterpolate5(
14638 * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, '; key4: ', v4, 'suffix');
14639 * ```
14640 *
14641 * @param prefix Static value used for concatenation only.
14642 * @param v0 Value checked for change.
14643 * @param i0 Static value used for concatenation only.
14644 * @param v1 Value checked for change.
14645 * @param i1 Static value used for concatenation only.
14646 * @param v2 Value checked for change.
14647 * @param i2 Static value used for concatenation only.
14648 * @param v3 Value checked for change.
14649 * @param i3 Static value used for concatenation only.
14650 * @param v4 Value checked for change.
14651 * @param suffix Static value used for concatenation only.
14652 * @codeGenApi
14653 */
14654export declare function ɵɵstyleMapInterpolate5(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, suffix: string): void;
14655
14656/**
14657 *
14658 * Update an interpolated style on an element with 6 bound values surrounded by text.
14659 *
14660 * Used when the value passed to a property has 6 interpolated values in it:
14661 *
14662 * ```html
14663 * <div style="key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}; key4: {{v4}};
14664 * key5: {{v5}}suffix"></div>
14665 * ```
14666 *
14667 * Its compiled representation is:
14668 *
14669 * ```ts
14670 * ɵɵstyleMapInterpolate6(
14671 * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, '; key4: ', v4, '; key5: ', v5,
14672 * 'suffix');
14673 * ```
14674 *
14675 * @param prefix Static value used for concatenation only.
14676 * @param v0 Value checked for change.
14677 * @param i0 Static value used for concatenation only.
14678 * @param v1 Value checked for change.
14679 * @param i1 Static value used for concatenation only.
14680 * @param v2 Value checked for change.
14681 * @param i2 Static value used for concatenation only.
14682 * @param v3 Value checked for change.
14683 * @param i3 Static value used for concatenation only.
14684 * @param v4 Value checked for change.
14685 * @param i4 Static value used for concatenation only.
14686 * @param v5 Value checked for change.
14687 * @param suffix Static value used for concatenation only.
14688 * @codeGenApi
14689 */
14690export declare function ɵɵstyleMapInterpolate6(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, suffix: string): void;
14691
14692/**
14693 *
14694 * Update an interpolated style on an element with 7 bound values surrounded by text.
14695 *
14696 * Used when the value passed to a property has 7 interpolated values in it:
14697 *
14698 * ```html
14699 * <div style="key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}; key4: {{v4}}; key5: {{v5}};
14700 * key6: {{v6}}suffix"></div>
14701 * ```
14702 *
14703 * Its compiled representation is:
14704 *
14705 * ```ts
14706 * ɵɵstyleMapInterpolate7(
14707 * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, '; key4: ', v4, '; key5: ', v5,
14708 * '; key6: ', v6, 'suffix');
14709 * ```
14710 *
14711 * @param prefix Static value used for concatenation only.
14712 * @param v0 Value checked for change.
14713 * @param i0 Static value used for concatenation only.
14714 * @param v1 Value checked for change.
14715 * @param i1 Static value used for concatenation only.
14716 * @param v2 Value checked for change.
14717 * @param i2 Static value used for concatenation only.
14718 * @param v3 Value checked for change.
14719 * @param i3 Static value used for concatenation only.
14720 * @param v4 Value checked for change.
14721 * @param i4 Static value used for concatenation only.
14722 * @param v5 Value checked for change.
14723 * @param i5 Static value used for concatenation only.
14724 * @param v6 Value checked for change.
14725 * @param suffix Static value used for concatenation only.
14726 * @codeGenApi
14727 */
14728export declare function ɵɵstyleMapInterpolate7(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, suffix: string): void;
14729
14730/**
14731 *
14732 * Update an interpolated style on an element with 8 bound values surrounded by text.
14733 *
14734 * Used when the value passed to a property has 8 interpolated values in it:
14735 *
14736 * ```html
14737 * <div style="key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}; key4: {{v4}}; key5: {{v5}};
14738 * key6: {{v6}}; key7: {{v7}}suffix"></div>
14739 * ```
14740 *
14741 * Its compiled representation is:
14742 *
14743 * ```ts
14744 * ɵɵstyleMapInterpolate8(
14745 * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, '; key4: ', v4, '; key5: ', v5,
14746 * '; key6: ', v6, '; key7: ', v7, 'suffix');
14747 * ```
14748 *
14749 * @param prefix Static value used for concatenation only.
14750 * @param v0 Value checked for change.
14751 * @param i0 Static value used for concatenation only.
14752 * @param v1 Value checked for change.
14753 * @param i1 Static value used for concatenation only.
14754 * @param v2 Value checked for change.
14755 * @param i2 Static value used for concatenation only.
14756 * @param v3 Value checked for change.
14757 * @param i3 Static value used for concatenation only.
14758 * @param v4 Value checked for change.
14759 * @param i4 Static value used for concatenation only.
14760 * @param v5 Value checked for change.
14761 * @param i5 Static value used for concatenation only.
14762 * @param v6 Value checked for change.
14763 * @param i6 Static value used for concatenation only.
14764 * @param v7 Value checked for change.
14765 * @param suffix Static value used for concatenation only.
14766 * @codeGenApi
14767 */
14768export declare function ɵɵstyleMapInterpolate8(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, i6: string, v7: any, suffix: string): void;
14769
14770/**
14771 * Update an interpolated style on an element with 9 or more bound values surrounded by text.
14772 *
14773 * Used when the number of interpolated values exceeds 8.
14774 *
14775 * ```html
14776 * <div
14777 * class="key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}; key4: {{v4}}; key5: {{v5}};
14778 * key6: {{v6}}; key7: {{v7}}; key8: {{v8}}; key9: {{v9}}suffix"></div>
14779 * ```
14780 *
14781 * Its compiled representation is:
14782 *
14783 * ```ts
14784 * ɵɵstyleMapInterpolateV(
14785 * ['key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, '; key4: ', v4, '; key5: ', v5,
14786 * '; key6: ', v6, '; key7: ', v7, '; key8: ', v8, '; key9: ', v9, 'suffix']);
14787 * ```
14788 *.
14789 * @param values The collection of values and the strings in-between those values, beginning with
14790 * a string prefix and ending with a string suffix.
14791 * (e.g. `['prefix', value0, '; key2: ', value1, '; key2: ', value2, ..., value99, 'suffix']`)
14792 * @codeGenApi
14793 */
14794export declare function ɵɵstyleMapInterpolateV(values: any[]): void;
14795
14796/**
14797 * Update a style binding on an element with the provided value.
14798 *
14799 * If the style value is falsy then it will be removed from the element
14800 * (or assigned a different value depending if there are any styles placed
14801 * on the element with `styleMap` or any static styles that are
14802 * present from when the element was created with `styling`).
14803 *
14804 * Note that the styling element is updated as part of `stylingApply`.
14805 *
14806 * @param prop A valid CSS property.
14807 * @param value New value to write (`null` or an empty string to remove).
14808 * @param suffix Optional suffix. Used with scalar values to add unit such as `px`.
14809 *
14810 * Note that this will apply the provided style value to the host element if this function is called
14811 * within a host binding function.
14812 *
14813 * @codeGenApi
14814 */
14815export declare function ɵɵstyleProp(prop: string, value: string | number | ɵSafeValue | undefined | null, suffix?: string | null): typeof ɵɵstyleProp;
14816
14817
14818/**
14819 *
14820 * Update an interpolated style property on an element with single bound value surrounded by text.
14821 *
14822 * Used when the value passed to a property has 1 interpolated value in it:
14823 *
14824 * ```html
14825 * <div style.color="prefix{{v0}}suffix"></div>
14826 * ```
14827 *
14828 * Its compiled representation is:
14829 *
14830 * ```ts
14831 * ɵɵstylePropInterpolate1(0, 'prefix', v0, 'suffix');
14832 * ```
14833 *
14834 * @param styleIndex Index of style to update. This index value refers to the
14835 * index of the style in the style bindings array that was passed into
14836 * `styling`.
14837 * @param prefix Static value used for concatenation only.
14838 * @param v0 Value checked for change.
14839 * @param suffix Static value used for concatenation only.
14840 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
14841 * @returns itself, so that it may be chained.
14842 * @codeGenApi
14843 */
14844export declare function ɵɵstylePropInterpolate1(prop: string, prefix: string, v0: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate1;
14845
14846/**
14847 *
14848 * Update an interpolated style property on an element with 2 bound values surrounded by text.
14849 *
14850 * Used when the value passed to a property has 2 interpolated values in it:
14851 *
14852 * ```html
14853 * <div style.color="prefix{{v0}}-{{v1}}suffix"></div>
14854 * ```
14855 *
14856 * Its compiled representation is:
14857 *
14858 * ```ts
14859 * ɵɵstylePropInterpolate2(0, 'prefix', v0, '-', v1, 'suffix');
14860 * ```
14861 *
14862 * @param styleIndex Index of style to update. This index value refers to the
14863 * index of the style in the style bindings array that was passed into
14864 * `styling`.
14865 * @param prefix Static value used for concatenation only.
14866 * @param v0 Value checked for change.
14867 * @param i0 Static value used for concatenation only.
14868 * @param v1 Value checked for change.
14869 * @param suffix Static value used for concatenation only.
14870 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
14871 * @returns itself, so that it may be chained.
14872 * @codeGenApi
14873 */
14874export declare function ɵɵstylePropInterpolate2(prop: string, prefix: string, v0: any, i0: string, v1: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate2;
14875
14876/**
14877 *
14878 * Update an interpolated style property on an element with 3 bound values surrounded by text.
14879 *
14880 * Used when the value passed to a property has 3 interpolated values in it:
14881 *
14882 * ```html
14883 * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}suffix"></div>
14884 * ```
14885 *
14886 * Its compiled representation is:
14887 *
14888 * ```ts
14889 * ɵɵstylePropInterpolate3(0, 'prefix', v0, '-', v1, '-', v2, 'suffix');
14890 * ```
14891 *
14892 * @param styleIndex Index of style to update. This index value refers to the
14893 * index of the style in the style bindings array that was passed into
14894 * `styling`.
14895 * @param prefix Static value used for concatenation only.
14896 * @param v0 Value checked for change.
14897 * @param i0 Static value used for concatenation only.
14898 * @param v1 Value checked for change.
14899 * @param i1 Static value used for concatenation only.
14900 * @param v2 Value checked for change.
14901 * @param suffix Static value used for concatenation only.
14902 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
14903 * @returns itself, so that it may be chained.
14904 * @codeGenApi
14905 */
14906export declare function ɵɵstylePropInterpolate3(prop: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate3;
14907
14908/**
14909 *
14910 * Update an interpolated style property on an element with 4 bound values surrounded by text.
14911 *
14912 * Used when the value passed to a property has 4 interpolated values in it:
14913 *
14914 * ```html
14915 * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix"></div>
14916 * ```
14917 *
14918 * Its compiled representation is:
14919 *
14920 * ```ts
14921 * ɵɵstylePropInterpolate4(0, 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');
14922 * ```
14923 *
14924 * @param styleIndex Index of style to update. This index value refers to the
14925 * index of the style in the style bindings array that was passed into
14926 * `styling`.
14927 * @param prefix Static value used for concatenation only.
14928 * @param v0 Value checked for change.
14929 * @param i0 Static value used for concatenation only.
14930 * @param v1 Value checked for change.
14931 * @param i1 Static value used for concatenation only.
14932 * @param v2 Value checked for change.
14933 * @param i2 Static value used for concatenation only.
14934 * @param v3 Value checked for change.
14935 * @param suffix Static value used for concatenation only.
14936 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
14937 * @returns itself, so that it may be chained.
14938 * @codeGenApi
14939 */
14940export declare function ɵɵstylePropInterpolate4(prop: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate4;
14941
14942/**
14943 *
14944 * Update an interpolated style property on an element with 5 bound values surrounded by text.
14945 *
14946 * Used when the value passed to a property has 5 interpolated values in it:
14947 *
14948 * ```html
14949 * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix"></div>
14950 * ```
14951 *
14952 * Its compiled representation is:
14953 *
14954 * ```ts
14955 * ɵɵstylePropInterpolate5(0, 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');
14956 * ```
14957 *
14958 * @param styleIndex Index of style to update. This index value refers to the
14959 * index of the style in the style bindings array that was passed into
14960 * `styling`.
14961 * @param prefix Static value used for concatenation only.
14962 * @param v0 Value checked for change.
14963 * @param i0 Static value used for concatenation only.
14964 * @param v1 Value checked for change.
14965 * @param i1 Static value used for concatenation only.
14966 * @param v2 Value checked for change.
14967 * @param i2 Static value used for concatenation only.
14968 * @param v3 Value checked for change.
14969 * @param i3 Static value used for concatenation only.
14970 * @param v4 Value checked for change.
14971 * @param suffix Static value used for concatenation only.
14972 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
14973 * @returns itself, so that it may be chained.
14974 * @codeGenApi
14975 */
14976export declare function ɵɵstylePropInterpolate5(prop: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate5;
14977
14978/**
14979 *
14980 * Update an interpolated style property on an element with 6 bound values surrounded by text.
14981 *
14982 * Used when the value passed to a property has 6 interpolated values in it:
14983 *
14984 * ```html
14985 * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix"></div>
14986 * ```
14987 *
14988 * Its compiled representation is:
14989 *
14990 * ```ts
14991 * ɵɵstylePropInterpolate6(0, 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');
14992 * ```
14993 *
14994 * @param styleIndex Index of style to update. This index value refers to the
14995 * index of the style in the style bindings array that was passed into
14996 * `styling`.
14997 * @param prefix Static value used for concatenation only.
14998 * @param v0 Value checked for change.
14999 * @param i0 Static value used for concatenation only.
15000 * @param v1 Value checked for change.
15001 * @param i1 Static value used for concatenation only.
15002 * @param v2 Value checked for change.
15003 * @param i2 Static value used for concatenation only.
15004 * @param v3 Value checked for change.
15005 * @param i3 Static value used for concatenation only.
15006 * @param v4 Value checked for change.
15007 * @param i4 Static value used for concatenation only.
15008 * @param v5 Value checked for change.
15009 * @param suffix Static value used for concatenation only.
15010 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
15011 * @returns itself, so that it may be chained.
15012 * @codeGenApi
15013 */
15014export declare function ɵɵstylePropInterpolate6(prop: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate6;
15015
15016/**
15017 *
15018 * Update an interpolated style property on an element with 7 bound values surrounded by text.
15019 *
15020 * Used when the value passed to a property has 7 interpolated values in it:
15021 *
15022 * ```html
15023 * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix"></div>
15024 * ```
15025 *
15026 * Its compiled representation is:
15027 *
15028 * ```ts
15029 * ɵɵstylePropInterpolate7(
15030 * 0, 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix');
15031 * ```
15032 *
15033 * @param styleIndex Index of style to update. This index value refers to the
15034 * index of the style in the style bindings array that was passed into
15035 * `styling`.
15036 * @param prefix Static value used for concatenation only.
15037 * @param v0 Value checked for change.
15038 * @param i0 Static value used for concatenation only.
15039 * @param v1 Value checked for change.
15040 * @param i1 Static value used for concatenation only.
15041 * @param v2 Value checked for change.
15042 * @param i2 Static value used for concatenation only.
15043 * @param v3 Value checked for change.
15044 * @param i3 Static value used for concatenation only.
15045 * @param v4 Value checked for change.
15046 * @param i4 Static value used for concatenation only.
15047 * @param v5 Value checked for change.
15048 * @param i5 Static value used for concatenation only.
15049 * @param v6 Value checked for change.
15050 * @param suffix Static value used for concatenation only.
15051 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
15052 * @returns itself, so that it may be chained.
15053 * @codeGenApi
15054 */
15055export declare function ɵɵstylePropInterpolate7(prop: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate7;
15056
15057/**
15058 *
15059 * Update an interpolated style property on an element with 8 bound values surrounded by text.
15060 *
15061 * Used when the value passed to a property has 8 interpolated values in it:
15062 *
15063 * ```html
15064 * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix"></div>
15065 * ```
15066 *
15067 * Its compiled representation is:
15068 *
15069 * ```ts
15070 * ɵɵstylePropInterpolate8(0, 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6,
15071 * '-', v7, 'suffix');
15072 * ```
15073 *
15074 * @param styleIndex Index of style to update. This index value refers to the
15075 * index of the style in the style bindings array that was passed into
15076 * `styling`.
15077 * @param prefix Static value used for concatenation only.
15078 * @param v0 Value checked for change.
15079 * @param i0 Static value used for concatenation only.
15080 * @param v1 Value checked for change.
15081 * @param i1 Static value used for concatenation only.
15082 * @param v2 Value checked for change.
15083 * @param i2 Static value used for concatenation only.
15084 * @param v3 Value checked for change.
15085 * @param i3 Static value used for concatenation only.
15086 * @param v4 Value checked for change.
15087 * @param i4 Static value used for concatenation only.
15088 * @param v5 Value checked for change.
15089 * @param i5 Static value used for concatenation only.
15090 * @param v6 Value checked for change.
15091 * @param i6 Static value used for concatenation only.
15092 * @param v7 Value checked for change.
15093 * @param suffix Static value used for concatenation only.
15094 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
15095 * @returns itself, so that it may be chained.
15096 * @codeGenApi
15097 */
15098export declare function ɵɵstylePropInterpolate8(prop: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, i6: string, v7: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate8;
15099
15100/**
15101 * Update an interpolated style property on an element with 9 or more bound values surrounded by
15102 * text.
15103 *
15104 * Used when the number of interpolated values exceeds 8.
15105 *
15106 * ```html
15107 * <div
15108 * style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix">
15109 * </div>
15110 * ```
15111 *
15112 * Its compiled representation is:
15113 *
15114 * ```ts
15115 * ɵɵstylePropInterpolateV(
15116 * 0, ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9,
15117 * 'suffix']);
15118 * ```
15119 *
15120 * @param styleIndex Index of style to update. This index value refers to the
15121 * index of the style in the style bindings array that was passed into
15122 * `styling`..
15123 * @param values The collection of values and the strings in-between those values, beginning with
15124 * a string prefix and ending with a string suffix.
15125 * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)
15126 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
15127 * @returns itself, so that it may be chained.
15128 * @codeGenApi
15129 */
15130export declare function ɵɵstylePropInterpolateV(prop: string, values: any[], valueSuffix?: string | null): typeof ɵɵstylePropInterpolateV;
15131
15132/**
15133 * Registers a synthetic host listener (e.g. `(@foo.start)`) on a component or directive.
15134 *
15135 * This instruction is for compatibility purposes and is designed to ensure that a
15136 * synthetic host listener (e.g. `@HostListener('@foo.start')`) properly gets rendered
15137 * in the component's renderer. Normally all host listeners are evaluated with the
15138 * parent component's renderer, but, in the case of animation @triggers, they need
15139 * to be evaluated with the sub component's renderer (because that's where the
15140 * animation triggers are defined).
15141 *
15142 * Do not use this instruction as a replacement for `listener`. This instruction
15143 * only exists to ensure compatibility with the ViewEngine's host binding behavior.
15144 *
15145 * @param eventName Name of the event
15146 * @param listenerFn The function to be called when event emits
15147 * @param useCapture Whether or not to use capture in event listener
15148 * @param eventTargetResolver Function that returns global target information in case this listener
15149 * should be attached to a global object like window, document or body
15150 *
15151 * @codeGenApi
15152 */
15153export declare function ɵɵsyntheticHostListener(eventName: string, listenerFn: (e?: any) => any): typeof ɵɵsyntheticHostListener;
15154
15155/**
15156 * Updates a synthetic host binding (e.g. `[@foo]`) on a component or directive.
15157 *
15158 * This instruction is for compatibility purposes and is designed to ensure that a
15159 * synthetic host binding (e.g. `@HostBinding('@foo')`) properly gets rendered in
15160 * the component's renderer. Normally all host bindings are evaluated with the parent
15161 * component's renderer, but, in the case of animation @triggers, they need to be
15162 * evaluated with the sub component's renderer (because that's where the animation
15163 * triggers are defined).
15164 *
15165 * Do not use this instruction as a replacement for `elementProperty`. This instruction
15166 * only exists to ensure compatibility with the ViewEngine's host binding behavior.
15167 *
15168 * @param index The index of the element to update in the data array
15169 * @param propName Name of property. Because it is going to DOM, this is not subject to
15170 * renaming as part of minification.
15171 * @param value New value to write.
15172 * @param sanitizer An optional function used to sanitize the value.
15173 *
15174 * @codeGenApi
15175 */
15176export declare function ɵɵsyntheticHostProperty<T>(propName: string, value: T | ɵNO_CHANGE, sanitizer?: SanitizerFn | null): typeof ɵɵsyntheticHostProperty;
15177
15178/**
15179 * Creates an LContainer for an ng-template (dynamically-inserted view), e.g.
15180 *
15181 * <ng-template #foo>
15182 * <div></div>
15183 * </ng-template>
15184 *
15185 * @param index The index of the container in the data array
15186 * @param templateFn Inline template
15187 * @param decls The number of nodes, local refs, and pipes for this template
15188 * @param vars The number of bindings for this template
15189 * @param tagName The name of the container element, if applicable
15190 * @param attrsIndex Index of template attributes in the `consts` array.
15191 * @param localRefs Index of the local references in the `consts` array.
15192 * @param localRefExtractor A function which extracts local-refs values from the template.
15193 * Defaults to the current element associated with the local-ref.
15194 *
15195 * @codeGenApi
15196 */
15197export declare function ɵɵtemplate(index: number, templateFn: ComponentTemplate<any> | null, decls: number, vars: number, tagName?: string | null, attrsIndex?: number | null, localRefsIndex?: number | null, localRefExtractor?: LocalRefExtractor): void;
15198
15199/**
15200 * Retrieves `TemplateRef` instance from `Injector` when a local reference is placed on the
15201 * `<ng-template>` element.
15202 *
15203 * @codeGenApi
15204 */
15205export declare function ɵɵtemplateRefExtractor(tNode: TNode, lView: ɵangular_packages_core_core_ca): TemplateRef<any> | null;
15206
15207/**
15208 * Create static text node
15209 *
15210 * @param index Index of the node in the data array
15211 * @param value Static string value to write.
15212 *
15213 * @codeGenApi
15214 */
15215export declare function ɵɵtext(index: number, value?: string): void;
15216
15217/**
15218 *
15219 * Update text content with a lone bound value
15220 *
15221 * Used when a text node has 1 interpolated value in it, an no additional text
15222 * surrounds that interpolated value:
15223 *
15224 * ```html
15225 * <div>{{v0}}</div>
15226 * ```
15227 *
15228 * Its compiled representation is:
15229 *
15230 * ```ts
15231 * ɵɵtextInterpolate(v0);
15232 * ```
15233 * @returns itself, so that it may be chained.
15234 * @see textInterpolateV
15235 * @codeGenApi
15236 */
15237export declare function ɵɵtextInterpolate(v0: any): typeof ɵɵtextInterpolate;
15238
15239/**
15240 *
15241 * Update text content with single bound value surrounded by other text.
15242 *
15243 * Used when a text node has 1 interpolated value in it:
15244 *
15245 * ```html
15246 * <div>prefix{{v0}}suffix</div>
15247 * ```
15248 *
15249 * Its compiled representation is:
15250 *
15251 * ```ts
15252 * ɵɵtextInterpolate1('prefix', v0, 'suffix');
15253 * ```
15254 * @returns itself, so that it may be chained.
15255 * @see textInterpolateV
15256 * @codeGenApi
15257 */
15258export declare function ɵɵtextInterpolate1(prefix: string, v0: any, suffix: string): typeof ɵɵtextInterpolate1;
15259
15260/**
15261 *
15262 * Update text content with 2 bound values surrounded by other text.
15263 *
15264 * Used when a text node has 2 interpolated values in it:
15265 *
15266 * ```html
15267 * <div>prefix{{v0}}-{{v1}}suffix</div>
15268 * ```
15269 *
15270 * Its compiled representation is:
15271 *
15272 * ```ts
15273 * ɵɵtextInterpolate2('prefix', v0, '-', v1, 'suffix');
15274 * ```
15275 * @returns itself, so that it may be chained.
15276 * @see textInterpolateV
15277 * @codeGenApi
15278 */
15279export declare function ɵɵtextInterpolate2(prefix: string, v0: any, i0: string, v1: any, suffix: string): typeof ɵɵtextInterpolate2;
15280
15281/**
15282 *
15283 * Update text content with 3 bound values surrounded by other text.
15284 *
15285 * Used when a text node has 3 interpolated values in it:
15286 *
15287 * ```html
15288 * <div>prefix{{v0}}-{{v1}}-{{v2}}suffix</div>
15289 * ```
15290 *
15291 * Its compiled representation is:
15292 *
15293 * ```ts
15294 * ɵɵtextInterpolate3(
15295 * 'prefix', v0, '-', v1, '-', v2, 'suffix');
15296 * ```
15297 * @returns itself, so that it may be chained.
15298 * @see textInterpolateV
15299 * @codeGenApi
15300 */
15301export declare function ɵɵtextInterpolate3(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string): typeof ɵɵtextInterpolate3;
15302
15303/**
15304 *
15305 * Update text content with 4 bound values surrounded by other text.
15306 *
15307 * Used when a text node has 4 interpolated values in it:
15308 *
15309 * ```html
15310 * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix</div>
15311 * ```
15312 *
15313 * Its compiled representation is:
15314 *
15315 * ```ts
15316 * ɵɵtextInterpolate4(
15317 * 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');
15318 * ```
15319 * @returns itself, so that it may be chained.
15320 * @see ɵɵtextInterpolateV
15321 * @codeGenApi
15322 */
15323export declare function ɵɵtextInterpolate4(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, suffix: string): typeof ɵɵtextInterpolate4;
15324
15325/**
15326 *
15327 * Update text content with 5 bound values surrounded by other text.
15328 *
15329 * Used when a text node has 5 interpolated values in it:
15330 *
15331 * ```html
15332 * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix</div>
15333 * ```
15334 *
15335 * Its compiled representation is:
15336 *
15337 * ```ts
15338 * ɵɵtextInterpolate5(
15339 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');
15340 * ```
15341 * @returns itself, so that it may be chained.
15342 * @see textInterpolateV
15343 * @codeGenApi
15344 */
15345export declare function ɵɵtextInterpolate5(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, suffix: string): typeof ɵɵtextInterpolate5;
15346
15347/**
15348 *
15349 * Update text content with 6 bound values surrounded by other text.
15350 *
15351 * Used when a text node has 6 interpolated values in it:
15352 *
15353 * ```html
15354 * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix</div>
15355 * ```
15356 *
15357 * Its compiled representation is:
15358 *
15359 * ```ts
15360 * ɵɵtextInterpolate6(
15361 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');
15362 * ```
15363 *
15364 * @param i4 Static value used for concatenation only.
15365 * @param v5 Value checked for change. @returns itself, so that it may be chained.
15366 * @see textInterpolateV
15367 * @codeGenApi
15368 */
15369export declare function ɵɵtextInterpolate6(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, suffix: string): typeof ɵɵtextInterpolate6;
15370
15371/**
15372 *
15373 * Update text content with 7 bound values surrounded by other text.
15374 *
15375 * Used when a text node has 7 interpolated values in it:
15376 *
15377 * ```html
15378 * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix</div>
15379 * ```
15380 *
15381 * Its compiled representation is:
15382 *
15383 * ```ts
15384 * ɵɵtextInterpolate7(
15385 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix');
15386 * ```
15387 * @returns itself, so that it may be chained.
15388 * @see textInterpolateV
15389 * @codeGenApi
15390 */
15391export declare function ɵɵtextInterpolate7(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, suffix: string): typeof ɵɵtextInterpolate7;
15392
15393/**
15394 *
15395 * Update text content with 8 bound values surrounded by other text.
15396 *
15397 * Used when a text node has 8 interpolated values in it:
15398 *
15399 * ```html
15400 * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix</div>
15401 * ```
15402 *
15403 * Its compiled representation is:
15404 *
15405 * ```ts
15406 * ɵɵtextInterpolate8(
15407 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, 'suffix');
15408 * ```
15409 * @returns itself, so that it may be chained.
15410 * @see textInterpolateV
15411 * @codeGenApi
15412 */
15413export declare function ɵɵtextInterpolate8(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, i6: string, v7: any, suffix: string): typeof ɵɵtextInterpolate8;
15414
15415/**
15416 * Update text content with 9 or more bound values other surrounded by text.
15417 *
15418 * Used when the number of interpolated values exceeds 8.
15419 *
15420 * ```html
15421 * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix</div>
15422 * ```
15423 *
15424 * Its compiled representation is:
15425 *
15426 * ```ts
15427 * ɵɵtextInterpolateV(
15428 * ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9,
15429 * 'suffix']);
15430 * ```
15431 *.
15432 * @param values The collection of values and the strings in between those values, beginning with
15433 * a string prefix and ending with a string suffix.
15434 * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)
15435 *
15436 * @returns itself, so that it may be chained.
15437 * @codeGenApi
15438 */
15439export declare function ɵɵtextInterpolateV(values: any[]): typeof ɵɵtextInterpolateV;
15440
15441/**
15442 * A template tag function for promoting the associated constant literal to a
15443 * TrustedHTML. Interpolation is explicitly not allowed.
15444 *
15445 * @param html constant template literal containing trusted HTML.
15446 * @returns TrustedHTML wrapping `html`.
15447 *
15448 * @security This is a security-sensitive function and should only be used to
15449 * convert constant values of attributes and properties found in
15450 * application-provided Angular templates to TrustedHTML.
15451 *
15452 * @codeGenApi
15453 */
15454export declare function ɵɵtrustConstantHtml(html: TemplateStringsArray): TrustedHTML | string;
15455
15456/**
15457 * A template tag function for promoting the associated constant literal to a
15458 * TrustedScriptURL. Interpolation is explicitly not allowed.
15459 *
15460 * @param url constant template literal containing a trusted script URL.
15461 * @returns TrustedScriptURL wrapping `url`.
15462 *
15463 * @security This is a security-sensitive function and should only be used to
15464 * convert constant values of attributes and properties found in
15465 * application-provided Angular templates to TrustedScriptURL.
15466 *
15467 * @codeGenApi
15468 */
15469export declare function ɵɵtrustConstantResourceUrl(url: TemplateStringsArray): TrustedScriptURL | string;
15470
15471/**
15472 * Creates new QueryList, stores the reference in LView and returns QueryList.
15473 *
15474 * @param predicate The type for which the query will search
15475 * @param flags Flags associated with the query
15476 * @param read What to save in the query
15477 *
15478 * @codeGenApi
15479 */
15480export declare function ɵɵviewQuery<T>(predicate: ProviderToken<unknown> | string[], flags: QueryFlags, read?: any): void;
15481
15482export { }
15483
\No newline at end of file