mirror of
https://github.com/squidfunk/mkdocs-material.git
synced 2026-08-01 02:08:46 -04:00
Refactored search observable integration
This commit is contained in:
@@ -33,16 +33,18 @@ import { PackerMessage } from "../message"
|
||||
/**
|
||||
* Setup packer web worker
|
||||
*
|
||||
* @param worker - Worker instance
|
||||
* @param options - Options
|
||||
* @param url - Worker url
|
||||
*
|
||||
* @return Worker handler
|
||||
*/
|
||||
export function setupPackerWorker(
|
||||
worker: Worker
|
||||
url: string
|
||||
): WorkerHandler<PackerMessage> {
|
||||
const worker = new Worker(url)
|
||||
|
||||
/* Create communication channels */
|
||||
const tx$ = new Subject<PackerMessage>()
|
||||
const rx$ = watchWorker(worker, { message$: tx$ })
|
||||
const rx$ = watchWorker(worker, { tx$ })
|
||||
|
||||
/* Return worker handler */
|
||||
return { tx$, rx$ }
|
||||
|
||||
@@ -20,21 +20,16 @@
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
import { Observable, Subject } from "rxjs"
|
||||
import { Subject } from "rxjs"
|
||||
import { ajax } from "rxjs/ajax"
|
||||
import { distinctUntilKeyChanged, map, pluck } from "rxjs/operators"
|
||||
import { map, pluck } from "rxjs/operators"
|
||||
|
||||
import { SearchIndexOptions } from "modules"
|
||||
import {
|
||||
SearchQuery,
|
||||
WorkerHandler,
|
||||
watchWorker
|
||||
} from "observables"
|
||||
import { WorkerHandler, watchWorker } from "observables"
|
||||
|
||||
import {
|
||||
SearchMessage,
|
||||
SearchMessageType,
|
||||
SearchQueryMessage,
|
||||
SearchSetupMessage,
|
||||
isSearchResultMessage
|
||||
} from "../message"
|
||||
@@ -44,11 +39,10 @@ import {
|
||||
* ------------------------------------------------------------------------- */
|
||||
|
||||
/**
|
||||
* Options
|
||||
* Setup options
|
||||
*/
|
||||
interface Options {
|
||||
interface SetupOptions {
|
||||
base: string /* Base url */
|
||||
query$: Observable<SearchQuery> /* Search query observable */
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------------
|
||||
@@ -64,7 +58,7 @@ interface Options {
|
||||
* @return Worker handler
|
||||
*/
|
||||
export function setupSearchWorker(
|
||||
url: string, { base, query$ }: Options
|
||||
url: string, { base }: SetupOptions
|
||||
): WorkerHandler<SearchMessage> {
|
||||
const worker = new Worker(url)
|
||||
const prefix = new URL(base, location.href)
|
||||
@@ -100,17 +94,6 @@ export function setupSearchWorker(
|
||||
)
|
||||
.subscribe(tx$.next.bind(tx$))
|
||||
|
||||
/* Subscribe to search query */
|
||||
query$
|
||||
.pipe(
|
||||
distinctUntilKeyChanged("value"),
|
||||
map<SearchQuery, SearchQueryMessage>(query => ({
|
||||
type: SearchMessageType.QUERY,
|
||||
data: query.value
|
||||
}))
|
||||
)
|
||||
.subscribe(tx$.next.bind(tx$))
|
||||
|
||||
/* Return worker handler */
|
||||
return { tx$, rx$ }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user