Merge branch 'master' of github.com:squidfunk/mkdocs-material

This commit is contained in:
squidfunk 2020-05-09 13:13:58 +02:00
commit bbfaa57d3c
9 changed files with 37 additions and 12 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
{
"assets/javascripts/bundle.js": "assets/javascripts/bundle.193efd2f.min.js",
"assets/javascripts/bundle.js.map": "assets/javascripts/bundle.193efd2f.min.js.map",
"assets/javascripts/bundle.js": "assets/javascripts/bundle.1fe7f735.min.js",
"assets/javascripts/bundle.js.map": "assets/javascripts/bundle.1fe7f735.min.js.map",
"assets/javascripts/vendor.js": "assets/javascripts/vendor.8caa27b7.min.js",
"assets/javascripts/vendor.js.map": "assets/javascripts/vendor.8caa27b7.min.js.map",
"assets/javascripts/worker/search.js": "assets/javascripts/worker/search.37585f48.min.js",

View File

@ -179,7 +179,7 @@
</div>
{% block scripts %}
<script src="{{ 'assets/javascripts/vendor.8caa27b7.min.js' | url }}"></script>
<script src="{{ 'assets/javascripts/bundle.193efd2f.min.js' | url }}"></script>
<script src="{{ 'assets/javascripts/bundle.1fe7f735.min.js' | url }}"></script>
{%- set translations = {} -%}
{%- for key in [
"clipboard.copy",

View File

@ -52,7 +52,7 @@ theme:
language: en
features:
- tabs
#- instant
- instant
palette:
primary: indigo
accent: indigo

View File

@ -46,7 +46,8 @@ import {
take,
shareReplay,
pluck,
catchError
catchError,
map
} from "rxjs/operators"
import {
@ -352,8 +353,28 @@ export function initialize(config: unknown) {
})
/* Enable instant loading, if not on file:// protocol */
if (config.features.includes("instant") && location.protocol !== "file:")
setupInstantLoading({ document$, location$, viewport$ })
if (config.features.includes("instant") && location.protocol !== "file:") {
/* Fetch sitemap and extract URL whitelist */
base$
.pipe(
switchMap(base => ajax({
url: `${base}/sitemap.xml`,
responseType: "document",
withCredentials: true
})
.pipe<Document>(
pluck("response")
)
),
map(document => (
getElements("loc", document).map(node => node.textContent!)
))
)
.subscribe(urls => {
setupInstantLoading(urls, { document$, location$, viewport$ })
})
}
/* ----------------------------------------------------------------------- */

View File

@ -100,7 +100,7 @@ interface SetupOptions {
* @param options - Options
*/
export function setupInstantLoading(
{ document$, viewport$, location$ }: SetupOptions
urls: string[], { document$, viewport$, location$ }: SetupOptions
): void {
/* Disable automatic scroll restoration */
@ -125,7 +125,11 @@ export function setupInstantLoading(
switchMap(ev => {
if (ev.target instanceof HTMLElement) {
const el = ev.target.closest("a")
if (el && !el.target && isLocalLocation(el)) {
if (
el && !el.target &&
isLocalLocation(el) &&
urls.includes(el.href)
) {
if (!isAnchorLocation(el))
ev.preventDefault()
return of(el)