mirror of
https://github.com/squidfunk/mkdocs-material.git
synced 2026-07-24 06:43:50 -04:00
Added re-emission of latest query when search is ready
This commit is contained in:
@@ -25,14 +25,18 @@ import {
|
||||
filter,
|
||||
map,
|
||||
mapTo,
|
||||
pluck,
|
||||
sample,
|
||||
startWith,
|
||||
switchMap
|
||||
switchMap,
|
||||
take
|
||||
} from "rxjs/operators"
|
||||
|
||||
import { WorkerHandler } from "browser"
|
||||
import {
|
||||
SearchMessage,
|
||||
SearchResult,
|
||||
isSearchQueryMessage,
|
||||
isSearchReadyMessage
|
||||
} from "integrations/search"
|
||||
|
||||
@@ -86,7 +90,7 @@ interface MountOptions {
|
||||
* @return Operator function
|
||||
*/
|
||||
export function mountSearch(
|
||||
{ rx$ }: WorkerHandler<SearchMessage>,
|
||||
{ rx$, tx$ }: WorkerHandler<SearchMessage>,
|
||||
{ query$, reset$, result$ }: MountOptions
|
||||
): OperatorFunction<HTMLElement, Search> {
|
||||
return pipe(
|
||||
@@ -100,6 +104,16 @@ export function mountSearch(
|
||||
startWith("waiting")
|
||||
) as Observable<SearchStatus>
|
||||
|
||||
/* Re-emit the latest query when search is ready */
|
||||
tx$
|
||||
.pipe(
|
||||
filter(isSearchQueryMessage),
|
||||
sample(status$),
|
||||
take(1),
|
||||
filter(({ data }) => data.length > 0)
|
||||
)
|
||||
.subscribe(tx$.next.bind(tx$))
|
||||
|
||||
/* Combine into single observable */
|
||||
return combineLatest([status$, query$, result$, reset$])
|
||||
.pipe(
|
||||
|
||||
Reference in New Issue
Block a user