import * as i0 from '@angular/core'; import { InjectionToken } from '@angular/core'; import { IterableChangeRecord } from '@angular/core'; import { IterableChanges } from '@angular/core'; import { Observable } from 'rxjs'; import { OnDestroy } from '@angular/core'; import { Subject } from 'rxjs'; import { TemplateRef } from '@angular/core'; import { ViewContainerRef } from '@angular/core'; /** DataSource wrapper for a native array. */ export declare class ArrayDataSource extends DataSource { private _data; constructor(_data: readonly T[] | Observable); connect(): Observable; disconnect(): void; } /** * Interface for any component that provides a view of some data collection and wants to provide * information regarding the view and any changes made. */ export declare interface CollectionViewer { /** * A stream that emits whenever the `CollectionViewer` starts looking at a new portion of the * data. The `start` index is inclusive, while the `end` is exclusive. */ viewChange: Observable; } export declare abstract class DataSource { /** * Connects a collection viewer (such as a data-table) to this data source. Note that * the stream provided will be accessed during change detection and should not directly change * values that are bound in template views. * @param collectionViewer The component that exposes a view over the data provided by this * data source. * @returns Observable that emits a new value when the data changes. */ abstract connect(collectionViewer: CollectionViewer): Observable; /** * Disconnects a collection viewer (such as a data-table) from this data source. Can be used * to perform any clean-up or tear-down operations when a view is being destroyed. * * @param collectionViewer The component that exposes a view over the data provided by this * data source. */ abstract disconnect(collectionViewer: CollectionViewer): void; } /** * A repeater that destroys views when they are removed from a * {@link ViewContainerRef}. When new items are inserted into the container, * the repeater will always construct a new embedded view for each item. * * @template T The type for the embedded view's $implicit property. * @template R The type for the item in each IterableDiffer change record. * @template C The type for the context passed to each embedded view. */ export declare class _DisposeViewRepeaterStrategy> implements _ViewRepeater { applyChanges(changes: IterableChanges, viewContainerRef: ViewContainerRef, itemContextFactory: _ViewRepeaterItemContextFactory, itemValueResolver: _ViewRepeaterItemValueResolver, itemViewChanged?: _ViewRepeaterItemChanged): void; detach(): void; } /** * Returns an error that reports that multiple values are passed into a selection model * with a single value. * @docs-private */ export declare function getMultipleValuesInSingleSelectionError(): Error; /** Checks whether an object is a data source. */ export declare function isDataSource(value: any): value is DataSource; /** Represents a range of numbers with a specified start and end. */ export declare type ListRange = { start: number; end: number; }; /** * A repeater that caches views when they are removed from a * {@link ViewContainerRef}. When new items are inserted into the container, * the repeater will reuse one of the cached views instead of creating a new * embedded view. Recycling cached views reduces the quantity of expensive DOM * inserts. * * @template T The type for the embedded view's $implicit property. * @template R The type for the item in each IterableDiffer change record. * @template C The type for the context passed to each embedded view. */ export declare class _RecycleViewRepeaterStrategy> implements _ViewRepeater { /** * The size of the cache used to store unused views. * Setting the cache size to `0` will disable caching. Defaults to 20 views. */ viewCacheSize: number; /** * View cache that stores embedded view instances that have been previously stamped out, * but don't are not currently rendered. The view repeater will reuse these views rather than * creating brand new ones. * * TODO(michaeljamesparsons) Investigate whether using a linked list would improve performance. */ private _viewCache; /** Apply changes to the DOM. */ applyChanges(changes: IterableChanges, viewContainerRef: ViewContainerRef, itemContextFactory: _ViewRepeaterItemContextFactory, itemValueResolver: _ViewRepeaterItemValueResolver, itemViewChanged?: _ViewRepeaterItemChanged): void; detach(): void; /** * Inserts a view for a new item, either from the cache or by creating a new * one. Returns `undefined` if the item was inserted into a cached view. */ private _insertView; /** Detaches the view at the given index and inserts into the view cache. */ private _detachAndCacheView; /** Moves view at the previous index to the current index. */ private _moveView; /** * Cache the given detached view. If the cache is full, the view will be * destroyed. */ private _maybeCacheView; /** Inserts a recycled view from the cache at the given index. */ private _insertViewFromCache; } /** * Event emitted when the value of a MatSelectionModel has changed. * @docs-private */ export declare interface SelectionChange { /** Model that dispatched the event. */ source: SelectionModel; /** Options that were added to the model. */ added: T[]; /** Options that were removed from the model. */ removed: T[]; } /** * Class to be used to power selecting one or more options from a list. */ export declare class SelectionModel { private _multiple; private _emitChanges; compareWith?: ((o1: T, o2: T) => boolean) | undefined; /** Currently-selected values. */ private _selection; /** Keeps track of the deselected options that haven't been emitted by the change event. */ private _deselectedToEmit; /** Keeps track of the selected options that haven't been emitted by the change event. */ private _selectedToEmit; /** Cache for the array value of the selected items. */ private _selected; /** Selected values. */ get selected(): T[]; /** Event emitted when the value has changed. */ readonly changed: Subject>; constructor(_multiple?: boolean, initiallySelectedValues?: T[], _emitChanges?: boolean, compareWith?: ((o1: T, o2: T) => boolean) | undefined); /** * Selects a value or an array of values. * @param values The values to select * @return Whether the selection changed as a result of this call * @breaking-change 16.0.0 make return type boolean */ select(...values: T[]): boolean | void; /** * Deselects a value or an array of values. * @param values The values to deselect * @return Whether the selection changed as a result of this call * @breaking-change 16.0.0 make return type boolean */ deselect(...values: T[]): boolean | void; /** * Sets the selected values * @param values The new selected values * @return Whether the selection changed as a result of this call * @breaking-change 16.0.0 make return type boolean */ setSelection(...values: T[]): boolean | void; /** * Toggles a value between selected and deselected. * @param value The value to toggle * @return Whether the selection changed as a result of this call * @breaking-change 16.0.0 make return type boolean */ toggle(value: T): boolean | void; /** * Clears all of the selected values. * @param flushEvent Whether to flush the changes in an event. * If false, the changes to the selection will be flushed along with the next event. * @return Whether the selection changed as a result of this call * @breaking-change 16.0.0 make return type boolean */ clear(flushEvent?: boolean): boolean | void; /** * Determines whether a value is selected. */ isSelected(value: T): boolean; /** * Determines whether the model does not have a value. */ isEmpty(): boolean; /** * Determines whether the model has a value. */ hasValue(): boolean; /** * Sorts the selected values based on a predicate function. */ sort(predicate?: (a: T, b: T) => number): void; /** * Gets whether multiple values can be selected. */ isMultipleSelection(): boolean; /** Emits a change event and clears the records of selected and deselected values. */ private _emitChangeEvent; /** Selects a value. */ private _markSelected; /** Deselects a value. */ private _unmarkSelected; /** Clears out the selected values. */ private _unmarkAll; /** * Verifies the value assignment and throws an error if the specified value array is * including multiple values while the selection model is not supporting multiple values. */ private _verifyValueAssignment; /** Whether there are queued up change to be emitted. */ private _hasQueuedChanges; /** Returns a value that is comparable to inputValue by applying compareWith function, returns the same inputValue otherwise. */ private _getConcreteValue; } /** * Interface for a class that can flatten hierarchical structured data and re-expand the flattened * data back into its original structure. Should be used in conjunction with the cdk-tree. */ export declare interface TreeDataNodeFlattener { /** Transforms a set of hierarchical structured data into a flattened data array. */ flattenNodes(structuredData: any[]): T[]; /** * Expands a flattened array of data into its hierarchical form using the provided expansion * model. */ expandFlattenedNodes(nodes: T[], expansionModel: SelectionModel): T[]; /** * Put node descendants of node in array. * If `onlyExpandable` is true, then only process expandable descendants. */ nodeDescendents(node: T, nodes: T[], onlyExpandable: boolean): void; } /** * Class to coordinate unique selection based on name. * Intended to be consumed as an Angular service. * This service is needed because native radio change events are only fired on the item currently * being selected, and we still need to uncheck the previous selection. * * This service does not *store* any IDs and names because they may change at any time, so it is * less error-prone if they are simply passed through when the events occur. */ export declare class UniqueSelectionDispatcher implements OnDestroy { private _listeners; /** * Notify other items that selection for the given name has been set. * @param id ID of the item. * @param name Name of the item. */ notify(id: string, name: string): void; /** * Listen for future changes to item selection. * @return Function used to deregister listener */ listen(listener: UniqueSelectionDispatcherListener): () => void; ngOnDestroy(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } export declare type UniqueSelectionDispatcherListener = (id: string, name: string) => void; /** * Injection token for {@link _ViewRepeater}. This token is for use by Angular Material only. * @docs-private */ export declare const _VIEW_REPEATER_STRATEGY: InjectionToken<_ViewRepeater>>; /** * Describes a strategy for rendering items in a {@link ViewContainerRef}. * * @template T The type for the embedded view's $implicit property. * @template R The type for the item in each IterableDiffer change record. * @template C The type for the context passed to each embedded view. */ export declare interface _ViewRepeater> { applyChanges(changes: IterableChanges, viewContainerRef: ViewContainerRef, itemContextFactory: _ViewRepeaterItemContextFactory, itemValueResolver: _ViewRepeaterItemValueResolver, itemViewChanged?: _ViewRepeaterItemChanged): void; detach(): void; } /** * Meta data describing the state of a view after it was updated by a * {@link _ViewRepeater}. * * @template R The type for the item in each IterableDiffer change record. * @template C The type for the context passed to each embedded view. */ export declare interface _ViewRepeaterItemChange { /** The view's context after it was changed. */ context?: C; /** Indicates how the view was changed. */ operation: _ViewRepeaterOperation; /** The view's corresponding change record. */ record: IterableChangeRecord; } /** * Type for a callback to be executed after a view has changed. * * @template R The type for the item in each IterableDiffer change record. * @template C The type for the context passed to each embedded view. */ export declare type _ViewRepeaterItemChanged = (change: _ViewRepeaterItemChange) => void; /** * The context for an embedded view in the repeater's view container. * * @template T The type for the embedded view's $implicit property. */ export declare interface _ViewRepeaterItemContext { $implicit?: T; } /** * A factory that derives the embedded view context for an item in a view * container. * * @template T The type for the embedded view's $implicit property. * @template R The type for the item in each IterableDiffer change record. * @template C The type for the context passed to each embedded view. */ export declare type _ViewRepeaterItemContextFactory> = (record: IterableChangeRecord, adjustedPreviousIndex: number | null, currentIndex: number | null) => _ViewRepeaterItemInsertArgs; /** * The arguments needed to construct an embedded view for an item in a view * container. * * @template C The type for the context passed to each embedded view. */ export declare interface _ViewRepeaterItemInsertArgs { templateRef: TemplateRef; context?: C; index?: number; } /** * Extracts the value of an item from an {@link IterableChangeRecord}. * * @template T The type for the embedded view's $implicit property. * @template R The type for the item in each IterableDiffer change record. */ export declare type _ViewRepeaterItemValueResolver = (record: IterableChangeRecord) => T; /** Indicates how a view was changed by a {@link _ViewRepeater}. */ export declare const enum _ViewRepeaterOperation { /** The content of an existing view was replaced with another item. */ REPLACED = 0, /** A new view was created with `createEmbeddedView`. */ INSERTED = 1, /** The position of a view changed, but the content remains the same. */ MOVED = 2, /** A view was detached from the view container. */ REMOVED = 3 } export { }