mirror of
https://github.com/squidfunk/mkdocs-material.git
synced 2026-07-23 06:13:38 -04:00
Link header to viewport resizes
This commit is contained in:
@@ -20,10 +20,21 @@
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
import { OperatorFunction, pipe } from "rxjs"
|
||||
import { Observable, OperatorFunction, pipe } from "rxjs"
|
||||
import { shareReplay, switchMap } from "rxjs/operators"
|
||||
|
||||
import { Header, watchHeader } from "observables"
|
||||
import { Header, Viewport, watchHeader } from "observables"
|
||||
|
||||
/* ----------------------------------------------------------------------------
|
||||
* Helper types
|
||||
* ------------------------------------------------------------------------- */
|
||||
|
||||
/**
|
||||
* Mount options
|
||||
*/
|
||||
interface MountOptions {
|
||||
viewport$: Observable<Viewport> /* Viewport observable */
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------------
|
||||
* Functions
|
||||
@@ -32,11 +43,15 @@ import { Header, watchHeader } from "observables"
|
||||
/**
|
||||
* Mount header from source observable
|
||||
*
|
||||
* @param options - Options
|
||||
*
|
||||
* @return Header observable
|
||||
*/
|
||||
export function mountHeader(): OperatorFunction<HTMLElement, Header> {
|
||||
export function mountHeader(
|
||||
{ viewport$ }: MountOptions
|
||||
): OperatorFunction<HTMLElement, Header> {
|
||||
return pipe(
|
||||
switchMap(watchHeader),
|
||||
switchMap(el => watchHeader(el, { viewport$ })),
|
||||
shareReplay(1)
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user