Skip to content

Commit f6770f9

Browse files
committed
feat(cdk/layout): add ResizeObserver
1 parent d8fb6b3 commit f6770f9

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
export * from './color-scheme';
22
export * from './color-scheme-observer';
33
export * from './named-breakpoint-observer';
4+
export * from './resize-observer';
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { Injectable } from '@angular/core';
2+
import { Observable } from 'rxjs';
3+
4+
/**
5+
* Service that provides a stream of ResizeObserverEntry arrays for the given element.
6+
* Uses the native ResizeObserver API.
7+
*/
8+
@Injectable({ providedIn: 'root' })
9+
export class ResizeObserver {
10+
/**
11+
* Observes the given element and returns a stream of ResizeObserverEntry arrays.
12+
*/
13+
observe(element: HTMLElement): Observable<ResizeObserverEntry[]> {
14+
return new Observable((observer) => {
15+
const instance = new window.ResizeObserver((e) => observer.next(e));
16+
instance.observe(element);
17+
return () => instance.disconnect();
18+
});
19+
}
20+
}

0 commit comments

Comments
 (0)