mirror of
https://github.com/squidfunk/mkdocs-material.git
synced 2024-11-30 18:24:35 +01:00
Added support for graceful recovery of failing search initialization on file:// protocol
This commit is contained in:
parent
6cf14bed10
commit
dac469eace
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
material/assets/javascripts/bundle.f593c2a5.min.js.map
Normal file
1
material/assets/javascripts/bundle.f593c2a5.min.js.map
Normal file
File diff suppressed because one or more lines are too long
@ -1,6 +1,6 @@
|
||||
{
|
||||
"assets/javascripts/bundle.js": "assets/javascripts/bundle.c51f1a8c.min.js",
|
||||
"assets/javascripts/bundle.js.map": "assets/javascripts/bundle.c51f1a8c.min.js.map",
|
||||
"assets/javascripts/bundle.js": "assets/javascripts/bundle.f593c2a5.min.js",
|
||||
"assets/javascripts/bundle.js.map": "assets/javascripts/bundle.f593c2a5.min.js.map",
|
||||
"assets/javascripts/vendor.js": "assets/javascripts/vendor.ff4ef43d.min.js",
|
||||
"assets/javascripts/vendor.js.map": "assets/javascripts/vendor.ff4ef43d.min.js.map",
|
||||
"assets/javascripts/worker/search.js": "assets/javascripts/worker/search.58d22e8e.min.js",
|
||||
|
@ -179,7 +179,7 @@
|
||||
</div>
|
||||
{% block scripts %}
|
||||
<script src="{{ 'assets/javascripts/vendor.ff4ef43d.min.js' | url }}"></script>
|
||||
<script src="{{ 'assets/javascripts/bundle.c51f1a8c.min.js' | url }}"></script>
|
||||
<script src="{{ 'assets/javascripts/bundle.f593c2a5.min.js' | url }}"></script>
|
||||
{%- set translations = {} -%}
|
||||
{%- for key in [
|
||||
"clipboard.copy",
|
||||
|
@ -30,7 +30,10 @@ import {
|
||||
combineLatest,
|
||||
animationFrameScheduler,
|
||||
fromEvent,
|
||||
from
|
||||
from,
|
||||
defer,
|
||||
of,
|
||||
NEVER
|
||||
} from "rxjs"
|
||||
import { ajax } from "rxjs/ajax"
|
||||
import {
|
||||
@ -42,7 +45,8 @@ import {
|
||||
observeOn,
|
||||
take,
|
||||
shareReplay,
|
||||
pluck
|
||||
pluck,
|
||||
catchError
|
||||
} from "rxjs/operators"
|
||||
|
||||
import {
|
||||
@ -228,60 +232,67 @@ export function initialize(config: unknown) {
|
||||
|
||||
/* ----------------------------------------------------------------------- */
|
||||
|
||||
// External index
|
||||
const index = config.search && config.search.index
|
||||
? config.search.index
|
||||
: undefined
|
||||
/* Search worker */
|
||||
const worker$ = defer(() => {
|
||||
const index = config.search && config.search.index
|
||||
? config.search.index
|
||||
: undefined
|
||||
|
||||
/* Fetch index if it wasn't passed explicitly */
|
||||
const index$ = typeof index !== "undefined"
|
||||
? from(index)
|
||||
: base$
|
||||
.pipe(
|
||||
switchMap(base => ajax({
|
||||
url: `${base}/search/search_index.json`,
|
||||
responseType: "json",
|
||||
withCredentials: true
|
||||
})
|
||||
.pipe<SearchIndex>(
|
||||
pluck("response")
|
||||
/* Fetch index if it wasn't passed explicitly */
|
||||
const index$ = typeof index !== "undefined"
|
||||
? from(index)
|
||||
: base$
|
||||
.pipe(
|
||||
switchMap(base => ajax({
|
||||
url: `${base}/search/search_index.json`,
|
||||
responseType: "json",
|
||||
withCredentials: true
|
||||
})
|
||||
.pipe<SearchIndex>(
|
||||
pluck("response")
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
const worker = setupSearchWorker(config.search.worker, {
|
||||
base$, index$
|
||||
return of(setupSearchWorker(config.search.worker, {
|
||||
base$, index$
|
||||
}))
|
||||
})
|
||||
|
||||
/* ----------------------------------------------------------------------- */
|
||||
|
||||
/* Mount search query */
|
||||
const query$ = useComponent("search-query")
|
||||
const search$ = worker$
|
||||
.pipe(
|
||||
mountSearchQuery(worker, { transform: config.search.transform }),
|
||||
shareReplay(1)
|
||||
)
|
||||
switchMap(worker => {
|
||||
|
||||
/* Mount search reset */
|
||||
const reset$ = useComponent("search-reset")
|
||||
.pipe(
|
||||
mountSearchReset(),
|
||||
shareReplay(1)
|
||||
)
|
||||
const query$ = useComponent("search-query")
|
||||
.pipe(
|
||||
mountSearchQuery(worker, { transform: config.search.transform }),
|
||||
shareReplay(1)
|
||||
)
|
||||
|
||||
/* Mount search result */
|
||||
const result$ = useComponent("search-result")
|
||||
.pipe(
|
||||
mountSearchResult(worker, { query$ }),
|
||||
shareReplay(1)
|
||||
)
|
||||
/* Mount search reset */
|
||||
const reset$ = useComponent("search-reset")
|
||||
.pipe(
|
||||
mountSearchReset(),
|
||||
shareReplay(1)
|
||||
)
|
||||
|
||||
/* ----------------------------------------------------------------------- */
|
||||
/* Mount search result */
|
||||
const result$ = useComponent("search-result")
|
||||
.pipe(
|
||||
mountSearchResult(worker, { query$ }),
|
||||
shareReplay(1)
|
||||
)
|
||||
|
||||
const search$ = useComponent("search")
|
||||
.pipe(
|
||||
mountSearch(worker, { query$, reset$, result$ }),
|
||||
shareReplay(1)
|
||||
return useComponent("search")
|
||||
.pipe(
|
||||
mountSearch(worker, { query$, reset$, result$ }),
|
||||
shareReplay(1)
|
||||
)
|
||||
}),
|
||||
catchError(() => NEVER)
|
||||
)
|
||||
|
||||
/* ----------------------------------------------------------------------- */
|
||||
|
Loading…
Reference in New Issue
Block a user