/** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ import { Directionality } from '@angular/cdk/bidi'; import { ElementRef, NgZone, OnDestroy, OnInit } from '@angular/core'; import { Observable } from 'rxjs'; import { ScrollDispatcher } from './scroll-dispatcher'; export declare type _Without = { [P in keyof T]?: never; }; export declare type _XOR = (_Without & U) | (_Without & T); export declare type _Top = { top?: number; }; export declare type _Bottom = { bottom?: number; }; export declare type _Left = { left?: number; }; export declare type _Right = { right?: number; }; export declare type _Start = { start?: number; }; export declare type _End = { end?: number; }; export declare type _XAxis = _XOR<_XOR<_Left, _Right>, _XOR<_Start, _End>>; export declare type _YAxis = _XOR<_Top, _Bottom>; /** * An extended version of ScrollToOptions that allows expressing scroll offsets relative to the * top, bottom, left, right, start, or end of the viewport rather than just the top and left. * Please note: the top and bottom properties are mutually exclusive, as are the left, right, * start, and end properties. */ export declare type ExtendedScrollToOptions = _XAxis & _YAxis & ScrollOptions; /** * Sends an event when the directive's element is scrolled. Registers itself with the * ScrollDispatcher service to include itself as part of its collection of scrolling events that it * can be listened to through the service. */ export declare class CdkScrollable implements OnInit, OnDestroy { protected elementRef: ElementRef; protected scrollDispatcher: ScrollDispatcher; protected ngZone: NgZone; protected dir?: Directionality | undefined; private readonly _destroyed; private _elementScrolled; constructor(elementRef: ElementRef, scrollDispatcher: ScrollDispatcher, ngZone: NgZone, dir?: Directionality | undefined); ngOnInit(): void; ngOnDestroy(): void; /** Returns observable that emits when a scroll event is fired on the host element. */ elementScrolled(): Observable; /** Gets the ElementRef for the viewport. */ getElementRef(): ElementRef; /** * Scrolls to the specified offsets. This is a normalized version of the browser's native scrollTo * method, since browsers are not consistent about what scrollLeft means in RTL. For this method * left and right always refer to the left and right side of the scrolling container irrespective * of the layout direction. start and end refer to left and right in an LTR context and vice-versa * in an RTL context. * @param options specified the offsets to scroll to. */ scrollTo(options: ExtendedScrollToOptions): void; private _applyScrollToOptions; /** * Measures the scroll offset relative to the specified edge of the viewport. This method can be * used instead of directly checking scrollLeft or scrollTop, since browsers are not consistent * about what scrollLeft means in RTL. The values returned by this method are normalized such that * left and right always refer to the left and right side of the scrolling container irrespective * of the layout direction. start and end refer to left and right in an LTR context and vice-versa * in an RTL context. * @param from The edge to measure from. */ measureScrollOffset(from: 'top' | 'left' | 'right' | 'bottom' | 'start' | 'end'): number; }